如何 运行 可以整理 2 个事件之间唯一数据的 BigQuery 查询
How to run a BigQuery query that can collate unique data between 2 events
我正在尝试查询数据库以获取有关已完成 2 个操作的用户的数据。
例如:
event_1 = "clicked_on_feedback" : event_params.key = "rating"
event_2 = "burger_chosen" : event_params.key = "burger_type"
现在我想看看给出负面反馈的用户他们选择订购什么类型的汉堡?
我如何为具有不同 param_keys 的不同事件执行此操作?
我能够获取给出负面评价的用户列表
SELECT user_id,event_name, param.value.string_value AS rating FROM `table.events_*`,
UNNEST(event_params) AS param
where event_name IN ("clicked_on_feedback")
AND event_timestamp >
UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 10 DAY))
AND param.key = "rating"
结果
user_id event_name rating
abcxxx clicked_on_feedback 1
abcdxx clicked_on_feedback 2
我如何为这组用户获取他们在同一时间间隔内选择订购的汉堡类型?
预计:
user_id event_name_1 rating event_name_2 burger_type
abcxxx clicked_on_feedback 1 burger_chosen triple_decker
abcdxx clicked_on_feedback 2 burger_chosen cheesy_chicken
只需连接两个 SELECT
语句,您可以将其定义为两个 CTE:一个用于 rating,另一个用于 burger_chosen。下面是一个未经测试的 SQL 查询,需要对 table 和字段进行必要的调整。
WITH rate AS
(SELECT user_id, event_name, param.value.string_value AS rating
FROM `table.events_*`, UNNEST(event_params) AS param
WHERE event_name IN ("clicked_on_feedback")
AND event_timestamp > UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 10 DAY))
AND param.key = "rating"
), brgr AS
(SELECT user_id, event_name, param.value.string_value AS burger_type
FROM `table.events_*`, UNNEST(event_params) AS param
WHERE event_name IN ("burger_chosen")
AND event_timestamp > UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 10 DAY))
AND param.key = "burger_type")
SELECT rate.user_id, rate.event_name AS event_name_1, rate.rating,
brgr.event_name AS event_name_2, brgr.burger_type
FROM rate
INNER JOIN brgr ON rate.user_id = brgr.user_id
我正在尝试查询数据库以获取有关已完成 2 个操作的用户的数据。
例如:
event_1 = "clicked_on_feedback" : event_params.key = "rating"
event_2 = "burger_chosen" : event_params.key = "burger_type"
现在我想看看给出负面反馈的用户他们选择订购什么类型的汉堡? 我如何为具有不同 param_keys 的不同事件执行此操作?
我能够获取给出负面评价的用户列表
SELECT user_id,event_name, param.value.string_value AS rating FROM `table.events_*`,
UNNEST(event_params) AS param
where event_name IN ("clicked_on_feedback")
AND event_timestamp >
UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 10 DAY))
AND param.key = "rating"
结果
user_id event_name rating
abcxxx clicked_on_feedback 1
abcdxx clicked_on_feedback 2
我如何为这组用户获取他们在同一时间间隔内选择订购的汉堡类型?
预计:
user_id event_name_1 rating event_name_2 burger_type
abcxxx clicked_on_feedback 1 burger_chosen triple_decker
abcdxx clicked_on_feedback 2 burger_chosen cheesy_chicken
只需连接两个 SELECT
语句,您可以将其定义为两个 CTE:一个用于 rating,另一个用于 burger_chosen。下面是一个未经测试的 SQL 查询,需要对 table 和字段进行必要的调整。
WITH rate AS
(SELECT user_id, event_name, param.value.string_value AS rating
FROM `table.events_*`, UNNEST(event_params) AS param
WHERE event_name IN ("clicked_on_feedback")
AND event_timestamp > UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 10 DAY))
AND param.key = "rating"
), brgr AS
(SELECT user_id, event_name, param.value.string_value AS burger_type
FROM `table.events_*`, UNNEST(event_params) AS param
WHERE event_name IN ("burger_chosen")
AND event_timestamp > UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 10 DAY))
AND param.key = "burger_type")
SELECT rate.user_id, rate.event_name AS event_name_1, rate.rating,
brgr.event_name AS event_name_2, brgr.burger_type
FROM rate
INNER JOIN brgr ON rate.user_id = brgr.user_id