SaraDev
(Sara Devlaeminck)
2023 年12 月 18 日 22:55
1
这是匿名用户仪表板报告的 SQL 版本。
本报告显示了在指定日期范围内,网站每天收到的来自匿名用户(未登录账户的用户)的页面浏览量。
--[params]
-- date :start_date = 2023-12-01
-- date :end_date = 2024-01-01
SELECT
date,
SUM(count) AS pageviews
FROM
application_requests
WHERE
req_type = 8
AND date BETWEEN :start_date AND :end_date
GROUP BY
date
ORDER BY
date
SQL 查询说明
参数定义 : 查询首先定义了两个参数 :start_date 和 :end_date,用于将数据筛选到所需的时间范围内。两个日期参数都接受 YYYY-MM-DD 格式的日期。
数据选择 : 它选择两列:date 和 count 的总和,后者被别名为 pageviews。count 代表每条记录的页面浏览量。
数据源 : 数据来自 application_requests 表,该表记录了应用程序的各种请求类型。
筛选 : WHERE 子句筛选记录,仅包括类型为 page_view_anon (req_type = 8) 且在指定日期范围内的记录。
聚合 : GROUP BY 子句按 date 列对结果进行分组,允许 SUM 函数计算每天的总页面浏览量。
排序 : 最后,结果按 date 升序排序,提供匿名页面浏览量的按时间顺序视图。
示例结果
date
pageviews
2023-12-01
12345
2023-12-02
11346
2023-12-03
18344
2023-12-04
15344
2023-12-05
12890
…
…
关于 req_type 的说明
application_requests 表中的 req_type 列对请求类型进行分类。在此查询中,我们关注的是 req_type = 8,它对应于匿名页面浏览量。
其他 req_type 值代表不同类型的请求,例如爬虫页面浏览量、登录页面浏览量以及各种 HTTP 响应状态。
所有 req_type 值:
0. http_total
1. http_2xx
2. http_background
3. http_3xx
4. http_4xx
5. http_5xx
6. page_view_crawler
7. page_view_logged_in
8. page_view_anon
9. page_view_logged_in_mobile
10. page_view_anon_mobile
11. api
12. user_api
3 个赞
这是否应该设置为 req_type IN (8,10) 以包含手机号码?
1 个赞
SaraDev
(Sara Devlaeminck)
2023 年12 月 18 日 23:46
3
我也曾考虑过这一点,但管理员仪表板报告仅包含 page_view_anon,而不包含 page_view_anon_mobile。
按照目前的查询方式,它真实地反映了仪表板报告,您可以通过运行查询并与仪表板报告结果进行比较来验证这一点。
这确实引出了一个不同但相关的问题——仪表板报告是否应包含匿名移动页面浏览量?
直观地说,我会认为应该包含,但很想听听其他人对此的看法。
1 个赞
啊,抱歉。我本应该在评论中说得更具体一些。我确实注意到这个查询是完全一样的,我的意思是仪表板报告本身应该包含它。
1 个赞
Jagster
(Jakke Lehtonen)
2023 年12 月 19 日 07:30
6
抱歉,这里是早上,我需要喝咖啡,所以我在语言上遇到了很大的障碍。
您是认为现在总数(tot)应该包含手机,还是说手机目前被排除在外?或者应该显示两个指标,实际总浏览量和手机浏览量?
目前,仪表板报告似乎只包含一种 req_type(8),这意味着它只计算桌面匿名视图。
我们想知道为什么它没有同时计算移动数据(要么只作为一个总数,要么作为两个数字,以便您可以更详细地查看)。
Jagster
(Jakke Lehtonen)
2023 年12 月 19 日 08:57
8
这不可能是真的,或者它也计算了机器人。按此计算,我每天大约有 1000 个,这听起来是正确的。但我知道我的台式机数量非常少。而且,如果我有 1000 台台式机和 9000 部手机(是的,比例就是这样),这就不可能是真的。
嗯。我不确定。我认为代码在这里:
# Update the documentation for the `add_request_rate_limiter` plugin API if this list changes.
default_rate_limiters = [
RequestTracker::RateLimiters::User,
RequestTracker::RateLimiters::IP,
]
stack = RequestTracker::RateLimiters::Stack.new
default_rate_limiters.each { |limiter| stack.append(limiter) }
stack
end
end
def self.rate_limiters_stack
@@stack ||= reset_rate_limiters_stack
end
def initialize(app, settings = {})
@app = app
page_view_anon_mobile 有可能是 page_view_anon 的子集。希望懂代码的人能帮忙给点建议。
3 个赞
jericson
(Jon Ericson)
2023 年12 月 21 日 00:18
10
嗯。是的,该逻辑会在页面浏览是否被归类为来自移动设备的情况下增加 page_view_anon。我认为我需要更新一些查询 . . .
1 个赞