BigQuery 特定列的第一条记录

Dop*_*a L 5 google-bigquery

这是我的输出示例:

在此处输入图片说明

我只需要为每个visitId 取第一条记录(最短时间)。

我尝试使用 MIN 函数从 GROUP BY 列表中排除 hits.time :

SELECT STRFTIME_UTC_USEC(date, '%U') AS WK, visitId, date AS SALES_DATE, hits.eventInfo.eventLabel AS SEARCH_DD, year(date) as yr, MIN(hits.time) AS t FROM (TABLE_DATE_RANGE([67977396.ga_sessions_], TIMESTAMP('2015-03-04'), TIMESTAMP('2015-03-04'))) WHERE hits.eventInfo.eventAction='Depart date' AND hits.eventInfo.eventCategory='Book a train' GROUP BY 1, 2, 3, 4, 5 ORDER BY visitId

我得到了这个输出:

在此处输入图片说明

问题是,正如您在最后两条记录中看到的,对于同一个visitId,我仍然有两行。那是因为该查询仅适用于相同的 search_dd。我需要在不查看search_dd 的情况下为每个visitId 花费最少的时间。

有什么建议吗?

提前致谢!

Pen*_*m10 3

这比你做的要容易得多。注意文档。

\n\n

hits.time =\xe2\x80\xa8 注册此点击时,visitStartTime 之后的毫秒数。第一次点击的 hist.time 为 0

\n\n

所以你只需要查询hits.time=0

\n\n

否则,要获取 WORM(仅附加)技术中的第一个或最后一个记录,您需要使用类似以下内容的内容:

\n\n

这将返回每个访问 ID 的最后一条记录。

\n\n
SELECT *\n   FROM\n     (SELECT visitId,hits.time,\n             row_number() over (partition BY visitId\n                                ORDER BY hits.time desc) seqnum\n       FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910]\n    )\n   WHERE seqnum=1 \nlimit 100\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以使用 seqnum=N 选择第 N 个值。

\n\n

另请注意,对于完全唯一的访问 ID,您应该使用 fullVisitorId 和 VisitId 的组合。您在食谱中有更多信息

\n