@@ -5,35 +5,39 @@ docstring:
5
5
sql_engine: DuckDB
6
6
-- -
7
7
-- Compute Metrics via Expressions
8
+ WITH sma_28019_cte AS (
9
+ -- Read Elements From Semantic Model 'visits_source'
10
+ -- Metric Time Dimension 'ds'
11
+ SELECT
12
+ DATE_TRUNC(' day' , ds) AS metric_time__day
13
+ , user_id AS user
14
+ , 1 AS visits
15
+ FROM *************************** .fct_visits visits_source_src_28000
16
+ )
17
+
8
18
SELECT
9
- metric_time__day
19
+ metric_time__day AS metric_time__day
10
20
, CAST(buys AS DOUBLE) / CAST(NULLIF(visits, 0 ) AS DOUBLE) AS visit_buy_conversion_rate_7days_fill_nulls_with_0
11
21
FROM (
12
22
-- Combine Aggregated Outputs
13
23
SELECT
14
- COALESCE(subq_27 .metric_time__day , subq_40 .metric_time__day ) AS metric_time__day
24
+ COALESCE(subq_27 .metric_time__day , subq_39 .metric_time__day ) AS metric_time__day
15
25
, COALESCE(MAX (subq_27 .visits ), 0 ) AS visits
16
- , COALESCE(MAX (subq_40 .buys ), 0 ) AS buys
26
+ , COALESCE(MAX (subq_39 .buys ), 0 ) AS buys
17
27
FROM (
18
28
-- Join to Time Spine Dataset
19
29
SELECT
20
30
subq_26 .ds AS metric_time__day
21
31
, subq_24 .visits AS visits
22
32
FROM *************************** .mf_time_spine subq_26
23
33
LEFT OUTER JOIN (
34
+ -- Read From CTE For node_id=sma_28019
35
+ -- Pass Only Elements: ['visits', 'metric_time__day']
24
36
-- Aggregate Measures
25
37
SELECT
26
38
metric_time__day
27
39
, SUM (visits) AS visits
28
- FROM (
29
- -- Read Elements From Semantic Model 'visits_source'
30
- -- Metric Time Dimension 'ds'
31
- -- Pass Only Elements: ['visits', 'metric_time__day']
32
- SELECT
33
- DATE_TRUNC(' day' , ds) AS metric_time__day
34
- , 1 AS visits
35
- FROM *************************** .fct_visits visits_source_src_28000
36
- ) subq_23
40
+ FROM sma_28019_cte sma_28019_cte
37
41
GROUP BY
38
42
metric_time__day
39
43
) subq_24
43
47
FULL OUTER JOIN (
44
48
-- Join to Time Spine Dataset
45
49
SELECT
46
- subq_39 .ds AS metric_time__day
47
- , subq_37 .buys AS buys
48
- FROM *************************** .mf_time_spine subq_39
50
+ subq_38 .ds AS metric_time__day
51
+ , subq_36 .buys AS buys
52
+ FROM *************************** .mf_time_spine subq_38
49
53
LEFT OUTER JOIN (
50
54
-- Find conversions for user within the range of 7 day
51
55
-- Pass Only Elements: ['buys', 'metric_time__day']
@@ -56,42 +60,33 @@ FROM (
56
60
FROM (
57
61
-- Dedupe the fanout with mf_internal_uuid in the conversion data set
58
62
SELECT DISTINCT
59
- FIRST_VALUE(subq_30 .visits ) OVER (
63
+ FIRST_VALUE(sma_28019_cte .visits ) OVER (
60
64
PARTITION BY
61
- subq_33 .user
62
- , subq_33 .metric_time__day
63
- , subq_33 .mf_internal_uuid
64
- ORDER BY subq_30 .metric_time__day DESC
65
+ subq_32 .user
66
+ , subq_32 .metric_time__day
67
+ , subq_32 .mf_internal_uuid
68
+ ORDER BY sma_28019_cte .metric_time__day DESC
65
69
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
66
70
) AS visits
67
- , FIRST_VALUE(subq_30 .metric_time__day ) OVER (
71
+ , FIRST_VALUE(sma_28019_cte .metric_time__day ) OVER (
68
72
PARTITION BY
69
- subq_33 .user
70
- , subq_33 .metric_time__day
71
- , subq_33 .mf_internal_uuid
72
- ORDER BY subq_30 .metric_time__day DESC
73
+ subq_32 .user
74
+ , subq_32 .metric_time__day
75
+ , subq_32 .mf_internal_uuid
76
+ ORDER BY sma_28019_cte .metric_time__day DESC
73
77
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
74
78
) AS metric_time__day
75
- , FIRST_VALUE(subq_30 .user ) OVER (
79
+ , FIRST_VALUE(sma_28019_cte .user ) OVER (
76
80
PARTITION BY
77
- subq_33 .user
78
- , subq_33 .metric_time__day
79
- , subq_33 .mf_internal_uuid
80
- ORDER BY subq_30 .metric_time__day DESC
81
+ subq_32 .user
82
+ , subq_32 .metric_time__day
83
+ , subq_32 .mf_internal_uuid
84
+ ORDER BY sma_28019_cte .metric_time__day DESC
81
85
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
82
86
) AS user
83
- , subq_33 .mf_internal_uuid AS mf_internal_uuid
84
- , subq_33 .buys AS buys
85
- FROM (
86
- -- Read Elements From Semantic Model 'visits_source'
87
- -- Metric Time Dimension 'ds'
88
- -- Pass Only Elements: ['visits', 'metric_time__day', 'user']
89
- SELECT
90
- DATE_TRUNC(' day' , ds) AS metric_time__day
91
- , user_id AS user
92
- , 1 AS visits
93
- FROM *************************** .fct_visits visits_source_src_28000
94
- ) subq_30
87
+ , subq_32 .mf_internal_uuid AS mf_internal_uuid
88
+ , subq_32 .buys AS buys
89
+ FROM sma_28019_cte sma_28019_cte
95
90
INNER JOIN (
96
91
-- Read Elements From Semantic Model 'buys_source'
97
92
-- Metric Time Dimension 'ds'
@@ -102,26 +97,26 @@ FROM (
102
97
, 1 AS buys
103
98
, GEN_RANDOM_UUID() AS mf_internal_uuid
104
99
FROM *************************** .fct_buys buys_source_src_28000
105
- ) subq_33
100
+ ) subq_32
106
101
ON
107
102
(
108
- subq_30 .user = subq_33 .user
103
+ sma_28019_cte .user = subq_32 .user
109
104
) AND (
110
105
(
111
- subq_30 .metric_time__day <= subq_33 .metric_time__day
106
+ sma_28019_cte .metric_time__day <= subq_32 .metric_time__day
112
107
) AND (
113
- subq_30 .metric_time__day > subq_33 .metric_time__day - INTERVAL 7 day
108
+ sma_28019_cte .metric_time__day > subq_32 .metric_time__day - INTERVAL 7 day
114
109
)
115
110
)
116
- ) subq_34
111
+ ) subq_33
117
112
GROUP BY
118
113
metric_time__day
119
- ) subq_37
114
+ ) subq_36
120
115
ON
121
- subq_39 .ds = subq_37 .metric_time__day
122
- ) subq_40
116
+ subq_38 .ds = subq_36 .metric_time__day
117
+ ) subq_39
123
118
ON
124
- subq_27 .metric_time__day = subq_40 .metric_time__day
119
+ subq_27 .metric_time__day = subq_39 .metric_time__day
125
120
GROUP BY
126
- COALESCE(subq_27 .metric_time__day , subq_40 .metric_time__day )
127
- ) subq_41
121
+ COALESCE(subq_27 .metric_time__day , subq_39 .metric_time__day )
122
+ ) subq_40
0 commit comments