Bigquery完整日期(年 - 月 - 日)到(年 - 月)

时间:2017-11-06 09:40:15

标签: sql google-bigquery

一个菜鸟问题。

我想查询我的数据库,查找给定页面的综合浏览量,然后我写了一个查询,每天返回页面/页面浏览量。我应该如何更改我的查询以获得相同的统计数据,但不是每天但不是很多?

所以相反:

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

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_MONTHUTC_USEC_TO_WEEKUTC_USEC_TO_DAY等日期功能将其标准化为该月的第一天,即一周的第一天。

select 
date(UTC_USEC_TO_MONTH(date)) as monthly, 
.....