SQL BigQuery:选择具有时间基础的查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL BigQuery:选择具有时间基础的查询相关的知识,希望对你有一定的参考价值。
我被要求在时间基础上找到数据库中用户的位置。我想在上午7:00到10:00和下午4:00到10:00之间的特定时间选择3月份的所有预订活动详情。
大查询将timestamp列作为event_timestamp。这样我们就可以在3月份的上午7:00到10:00和下午4:00到10:00之间收到所有预订事件。
如何使用event_timestamp获取特定时间的数据。
SELECT
x.value.string_value AS lat,
y.value.string_value AS lon, EXTRACT(HOUR FROM TIMESTAMP_MICROS(event_timestamp)) as t,
geo.city
FROM
`apps.analytics_185684181.*`,
UNNEST(user_properties) AS x,
UNNEST(user_properties) AS y
WHERE
x.key="user_loc_lat"
AND y.key="user_loc_lon"
AND event_name='reservation'
AND (_TABLE_SUFFIX BETWEEN 'events_20190301'
AND 'events_20190331')
谁有人知道如何这样做?
非常感谢 !
答案
为什么我不能在WHERE子句中使用“小时”
因为在执行SELECT之前会评估WHERE子句,所以在评估WHERE时,hour
尚不可用。如果你想简化你的查询并使用hour
- 你可以先在内部SELECT中引入hour
字段,然后在外部SELECT中使用hour
,如下例所示
#standardSQL
SELECT lat, lon, hour FROM (
SELECT
x.value.string_value AS lat,
y.value.string_value AS lon,
EXTRACT(HOUR FROM TIMESTAMP_MICROS(event_timestamp)) AS hour
FROM `apps.analytics_185684181.*`,
UNNEST(user_properties) AS x,
UNNEST(user_properties) AS y
WHERE x.key="user_loc_lat"
AND y.key="user_loc_lon"
AND event_name='reservation'
AND (_TABLE_SUFFIX BETWEEN 'events_20190301' AND 'events_20190331')
)
WHERE hour BETWEEN 7 AND 9
OR hour BETWEEN 16 AND 21
另一答案
我使用带有HOUR部分的EXTRACT Date功能得到了结果。它将以24小时数字(0-23)返回事件时间戳小时。
EXTRACT(part FROM date_expression)
SELECT
x.value.string_value AS lat,
y.value.string_value AS lon, EXTRACT(HOUR FROM TIMESTAMP_MICROS(event_timestamp)) AS hour
FROM
`apps.analytics_185684181.*`,
UNNEST(user_properties) AS x,
UNNEST(user_properties) AS y
WHERE EXTRACT(HOUR FROM TIMESTAMP_MICROS(event_timestamp))>=7
AND EXTRACT(HOUR FROM TIMESTAMP_MICROS(event_timestamp))<=9 AND
x.key="user_loc_lat"
AND y.key="user_loc_lon"
AND event_name='reservation'
AND (_TABLE_SUFFIX BETWEEN 'events_20190301'
AND 'events_20190331')
但是我不能使用列名称小时和where子句一样
哪个投掷错误无法识别的名称:小时
非常感谢任何修复/建议和改进。
以上是关于SQL BigQuery:选择具有时间基础的查询的主要内容,如果未能解决你的问题,请参考以下文章
需要 SQL 查询帮助以解析 BigQuery 表中的 JSON 数据
使用具有相对日期范围和标准 SQL 的 Bigquery Table 通配符 [重复]
如何在 BigQuery 中最小化每次 SQL 查询执行的成本