8

我正在使用标准 SQL。即使它是一个基本查询,它仍然会抛出错误。任何建议请

SELECT 
  fullVisitorId,
  CONCAT(CAST(fullVisitorId AS string),CAST(visitId AS string)) AS session,
  date,
  visitStartTime,
  hits.time,
  hits.page.pagepath
FROM
  `XXXXXXXXXX.ga_sessions_*`,
  UNNEST(hits) AS hits
WHERE
  _TABLE_SUFFIX BETWEEN "20160801"
  AND "20170331"
ORDER BY
  fullVisitorId,
  date,
  visitStartTime
4

2 回答 2

10

此查询起作用的唯一方法是删除最后应用的排序:

SELECT 
  fullVisitorId,
  CONCAT(CAST(fullVisitorId AS string),CAST(visitId AS string)) AS session,
  date,
  visitStartTime,
  hits.time,
  hits.page.pagepath
FROM
  `XXXXXXXXXX.ga_sessions_*`,
  UNNEST(hits) AS hits
WHERE
  _TABLE_SUFFIX BETWEEN "20160801"
  AND "20170331"

ORDER BY操作非常昂贵并且不能并行处理,所以尽量避免它(或尝试在有限的结果集中应用它)

于 2017-09-01T17:43:55.040 回答
3

除了接受的答案之外,您可能希望按日期对表进行分区,以减少昂贵查询使用的内存量。

于 2018-02-11T02:35:00.030 回答