一个菜鸟问题。
我想查询我的数据库,查找给定页面的综合浏览量,然后我写了一个查询,每天返回页面/页面浏览量。我应该如何更改我的查询以获得相同的统计数据,但不是每天但不是很多?
所以相反:
page pv date
/mysite 10 2017-01-01
获取
page pv date
/mysite 500 2017-01
我的疑问:
select
date,
hits.page.pagePath as pagePath,
count(totals.pageviews) as pageViews
from Table_DATE_RANGE ([818251235.ga_sessions_] , Timestamp('2016-01-01'), Timestamp('2017-11-01'))
group by 1,2
答案 0 :(得分:1)
您在原始查询中尝试计算的内容尚不清楚,但这是一个使用标准SQL并按月执行分组的查询:
#standardSQL
SELECT
DATE_TRUNC(PARSE_DATE('%Y%m%d', date), MONTH) AS month,
hit.page.pagePath,
COUNT(*)
FROM `818251235.ga_sessions_*`,
UNNEST (hits) AS hit
WHERE _TABLE_SUFFIX BETWEEN
'20160101' AND '20181101'
GROUP BY 1, 2;
修改:修复为使用DATE_TRUNC
代替EXTRACT(MONTH FROM ...)
,因为年份和月份都相关。
答案 1 :(得分:0)
您可以使用UTC_USEC_TO_MONTH
,UTC_USEC_TO_WEEK
,UTC_USEC_TO_DAY
等日期功能将其标准化为该月的第一天,即一周的第一天。
select
date(UTC_USEC_TO_MONTH(date)) as monthly,
.....