Google analytics Google BigQuery:访问一组页面的会话数

Google analytics Google BigQuery:访问一组页面的会话数,google-analytics,google-bigquery,bigquery-standard-sql,Google Analytics,Google Bigquery,Bigquery Standard Sql,我一直在研究GA数据的(标准)SQL查询,以查找包含两个URL之一的会话数。但是,通过这两个URL进行过滤并从hits.page.pagePath中提取是我遇到问题的地方 这是一个向我提供错误的查询示例: SELECT date, COUNT(visitId) AS visits FROM `123456789.ga_sessions_20170219`,`123456789.ga_sessions_20170220` WHERE REGEXP_CONTAINS(hits.page.pa

我一直在研究GA数据的(标准)SQL查询,以查找包含两个URL之一的会话数。但是,通过这两个URL进行过滤并从hits.page.pagePath中提取是我遇到问题的地方

这是一个向我提供错误的查询示例:

SELECT
  date, COUNT(visitId) AS visits
FROM `123456789.ga_sessions_20170219`,`123456789.ga_sessions_20170220`
WHERE
  REGEXP_CONTAINS(hits.page.pagePath, r"^/(apples|oranges).html.*")
GROUP BY date
而直接变平也不起作用:

SELECT
  date, COUNT(visitId) AS visits
FROM `123456789.ga_sessions_20170219`,`123456789.ga_sessions_20170220`
WHERE
  REGEXP_CONTAINS((
    SELECT pagePath
    FROM UNNEST(
      SELECT page
      FROM UNNEST(hits) AS page) AS pagePath), r"^/(apples|oranges).html.*")
GROUP BY date

另外,我不确定这种方法是否能提供我想要的数据。

首先,在标准SQL中,不能使用逗号对
联合
表(逗号表示
交叉连接
)-可以使用
\u表后缀
或直接
联合所有
。 要计算在正则表达式定义的页面上命中的会话数,可以使用以下
EXISTS
子句:

SELECT
  date, COUNT(visitId) AS visits
FROM 
  (SELECT * FROM `123456789.ga_sessions_20170219` UNION ALL
   SELECT * FROM `123456789.ga_sessions_20170220`)
WHERE
  EXISTS(
    SELECT 1 FROM UNNEST(hits) h
    WHERE REGEXP_CONTAINS(h.page.pagePath, r"^/(apples|oranges).html.*"))
GROUP BY date

明亮的谢谢正如您所看到的,我的一些问题来自于从遗留SQL的移植。你的例子非常有效——我已经根据我在GA中看到的结果进行了验证。