BigQuery 特定列的第一条记录
BigQuery first record of a specific column
这是我的输出示例:
我只需要获取每个 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 花费最少的时间。
有什么建议吗?
提前致谢!
这比您做的要容易得多。注意文档。
hits.time = visitStartTime 之后注册此点击的毫秒数。 第一击的 hits.time 为 0
所以你只需要查询 hits.time=0
,
否则要在 WORM(仅附加)技术中获取第一条或最后一条记录,您需要使用类似的东西:
这是每个 visitId 的 returns 最后记录。
SELECT *
FROM
(SELECT visitId,hits.time,
row_number() over (partition BY visitId
ORDER BY hits.time desc) seqnum
FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910]
)
WHERE seqnum=1
limit 100
您可以使用 seqnum=N 选择第 N 个值。
另请注意,对于完全唯一的访问 ID,您应该结合使用 fullVisitorId 和 visitId。您在 cookbook
中有更多信息
为了更简洁的解决方案,您可以这样做:
select *
from [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910]
where true
qualify row_number() over (partition BY visitId ORDER BY hits.time desc) = 1
这是我的输出示例:
我只需要获取每个 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 花费最少的时间。
有什么建议吗?
提前致谢!
这比您做的要容易得多。注意文档。
hits.time = visitStartTime 之后注册此点击的毫秒数。 第一击的 hits.time 为 0
所以你只需要查询 hits.time=0
,
否则要在 WORM(仅附加)技术中获取第一条或最后一条记录,您需要使用类似的东西:
这是每个 visitId 的 returns 最后记录。
SELECT *
FROM
(SELECT visitId,hits.time,
row_number() over (partition BY visitId
ORDER BY hits.time desc) seqnum
FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910]
)
WHERE seqnum=1
limit 100
您可以使用 seqnum=N 选择第 N 个值。
另请注意,对于完全唯一的访问 ID,您应该结合使用 fullVisitorId 和 visitId。您在 cookbook
中有更多信息为了更简洁的解决方案,您可以这样做:
select *
from [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910]
where true
qualify row_number() over (partition BY visitId ORDER BY hits.time desc) = 1