@@ -39,6 +39,56 @@ def downloads_by_feed(model, slugs, date_start = Date.utc_today - 28.days)
3939 . load_async
4040 end
4141
42+ def top_countries_rollups ( model , date_start = ( Date . utc_today - 28 . days ) . to_s , date_end = Date . utc_today . to_s )
43+ model_id , column = model_attrs ( model )
44+
45+ Rollups ::DailyGeo
46+ . where ( "#{ column } " : model_id , day : date_start ..date_end )
47+ . select ( :country_code , "SUM(count) AS count" )
48+ . group ( :country_code )
49+ . order ( Arel . sql ( "SUM(count) AS count DESC" ) )
50+ . final
51+ . limit ( 10 )
52+ . load_async
53+ end
54+
55+ def other_countries_rollups ( model , top_country_codes , date_start = ( Date . utc_today - 28 . days ) . to_s , date_end = Date . utc_today . to_s )
56+ model_id , column = model_attrs ( model )
57+
58+ Rollups ::DailyGeo
59+ . where ( "#{ column } " : model_id , day : date_start ..date_end )
60+ . where . not ( country_code : top_country_codes )
61+ . select ( "'Other' AS country_code" , "SUM(count) AS count" )
62+ . final
63+ . load_async
64+ end
65+
66+ def top_agents_rollups ( model , date_start = ( Date . utc_today - 28 . days ) . to_s , date_end = Date . utc_today . to_s )
67+ model_id , column = model_attrs ( model )
68+
69+ Rollups ::DailyAgent
70+ . where ( "#{ column } " : model_id , day : date_start ..date_end )
71+ . select ( "agent_name_id AS code" , "SUM(count) AS count" )
72+ . group ( "agent_name_id AS code" )
73+ . order ( Arel . sql ( "SUM(count) AS count DESC" ) )
74+ . final
75+ . limit ( 10 )
76+ . load_async
77+ end
78+
79+ def other_agents_rollups ( model , top_agent_codes , date_start = ( Date . utc_today - 28 . days ) . to_s , date_end = Date . utc_today . to_s )
80+ model_id , column = model_attrs ( model )
81+
82+ Rollups ::DailyAgent
83+ . where ( "#{ column } " : model_id , day : date_start ..date_end )
84+ . where . not ( agent_name_id : top_agent_codes )
85+ . select ( "'Other' AS code" , "SUM(count) AS count" )
86+ . final
87+ . load_async
88+ end
89+
90+ private
91+
4292 def model_attrs ( model )
4393 model_id = if model . is_a? ( Enumerable )
4494 model . pluck ( :guid )
0 commit comments