@@ -11,37 +11,47 @@ WITH pages AS (
11
11
client,
12
12
root_page,
13
13
tech.technology
14
- FROM ${ ctx . ref ( 'crawl' , 'pages' ) } ,
15
- UNNEST( technologies) AS tech
14
+ FROM ${ ctx . ref ( 'crawl' , 'pages' ) } AS pages
15
+ INNER JOIN pages. technologies AS tech
16
16
WHERE
17
17
date = '${ pastMonth } '
18
18
${ constants . devRankFilter }
19
19
),
20
20
21
21
tech_origins AS (
22
22
SELECT
23
- client,
24
23
technology,
25
- COUNT(DISTINCT root_page) AS origins
26
- FROM pages
27
- GROUP BY
28
- client,
29
- technology
24
+ STRUCT(
25
+ MAX(IF(client = 'desktop', origins, 0)) AS desktop,
26
+ MAX(IF(client = 'mobile', origins, 0)) AS mobile
27
+ ) AS origins
28
+ FROM (
29
+ SELECT
30
+ client,
31
+ technology,
32
+ COUNT(DISTINCT root_page) AS origins
33
+ FROM pages
34
+ GROUP BY
35
+ client,
36
+ technology
37
+ )
38
+ GROUP BY technology
30
39
),
31
40
32
41
technologies AS (
33
42
SELECT
34
43
name AS technology,
35
44
description,
45
+ icon,
36
46
STRING_AGG(DISTINCT category, ', ' ORDER BY category ASC) AS category,
37
- categories AS category_obj,
38
- NULL AS similar_technologies
39
- FROM ${ ctx . ref ( 'wappalyzer' , 'technologies' ) } ,
40
- UNNEST(categories) AS category
47
+ categories AS category_obj
48
+ FROM ${ ctx . ref ( 'wappalyzer' , 'technologies' ) } AS technologies
49
+ INNER JOIN technologies.categories AS category
41
50
GROUP BY
42
51
technology,
43
52
description,
44
- categories
53
+ categories,
54
+ icon
45
55
),
46
56
47
57
total_pages AS (
@@ -53,12 +63,11 @@ total_pages AS (
53
63
)
54
64
55
65
SELECT
56
- client,
57
66
technology,
58
67
description,
68
+ icon,
59
69
category,
60
70
category_obj,
61
- similar_technologies,
62
71
origins
63
72
FROM tech_origins
64
73
INNER JOIN technologies
@@ -67,12 +76,14 @@ USING(technology)
67
76
UNION ALL
68
77
69
78
SELECT
70
- client,
71
79
'ALL' AS technology,
72
80
NULL AS description,
81
+ NULL AS icon,
73
82
NULL AS category,
74
83
NULL AS category_obj,
75
- NULL AS similar_technologies,
76
- origins
84
+ STRUCT(
85
+ MAX(IF(client = 'desktop', origins, 0)) AS desktop,
86
+ MAX(IF(client = 'mobile', origins, 0)) AS mobile
87
+ ) AS origins
77
88
FROM total_pages
78
89
` )
0 commit comments