以下查询提取我需要的事件
purchase
的事件参数:
SELECT
event_date,
event_name,
traffic_source.medium,
traffic_source.source,
(
SELECT
value.string_value
FROM
UNNEST (event_params)
WHERE
KEY= 'form_id') AS form_id,
(
SELECT
value.int_value
FROM
UNNEST(event_params)
WHERE
KEY = 'ga_session_id') AS session_id,
FROM
`table1`
WHERE
event_name = 'purchase'
这个其他查询取消了自定义事件的事件参数的嵌套,我需要将其与上面的
purchase
事件的寄存器连接起来:
SELECT
event_date,
event_name,
(
SELECT
value.int_value
FROM
UNNEST(event_params)
WHERE
KEY = 'ga_session_id') AS session_id,
(
SELECT
value.string_value
FROM
UNNEST(event_params)
WHERE
KEY = 'campaign_id') AS experiment_id,
(
SELECT
value.string_value
FROM
UNNEST(event_params)
WHERE
KEY = 'campaing_name') AS experiment_name,
(
SELECT
value.string_value
FROM
UNNEST(event_params)
WHERE
KEY = 'variation_name') AS variantion_name
#COUNT(1) AS sessions
FROM
`table1`
WHERE
event_name ="kameleoon_experiment"
ga_session_id
将相同“ga_session_id”的购买事件参数和自定义事件的事件参数加入同一行的查询是什么?
我目前正在单独下载查询结果,然后使用
ga_session_id
作为键来查找两个表。
这取决于这两个事件之间是什么样的关系。 如果没有(不牢固)依赖关系,并且您只想将它们显示在一行中,那么您可以使用完全连接。
这应该看起来像:
WITH
purchase AS (
SELECT
event_date,
event_name,
traffic_source.medium,
traffic_source.source,
(
SELECT
value.string_value
FROM
UNNEST (event_params)
WHERE
KEY= 'form_id') AS form_id,
(
SELECT
value.int_value
FROM
UNNEST(event_params)
WHERE
KEY = 'ga_session_id') AS session_id,
FROM
`analytics_.events_*` gae --
WHERE
gae.event_name = "purchase"
)
,kameleoon_experiment AS (
SELECT
event_date,
event_name,
(
SELECT
value.int_value
FROM
UNNEST(event_params)
WHERE
KEY = 'ga_session_id') AS session_id,
(
SELECT
value.string_value
FROM
UNNEST(event_params)
WHERE
KEY = 'campaign_id') AS experiment_id,
(
SELECT
value.string_value
FROM
UNNEST(event_params)
WHERE
KEY = 'campaing_name') AS experiment_name,
(
SELECT
value.string_value
FROM
UNNEST(event_params)
WHERE
KEY = 'variation_name') AS variantion_name
FROM
`analytics_.events_*` gae --
WHERE
gae.event_name = "kameleoon_experiment"
)
-- Join two tables in one row
SELECT
pur.event_date,
pur.event_name,
pur.medium,
pur.source,
pur.form_id,
pur.session_id,
--kam.event_date,
--kam.event_name,
--kam.session_id,
kam.experiment_id,
kam.experiment_name,
kam.variantion_name
FROM
purchase pur
FULL JOIN
kameleoon_experiment kam
ON pur.event_date = kam.event_date
AND pur.session_id = kam.session_id ;
但通常,这两者之间存在某种关系(例如购买总是被触发,kameleoon_experiment 仅基于特定条件之后触发)。 在这种情况下,您应该使用“LEFT JOIN”或“INNER JOIN”来代替。
您可以查看有关此问题的一些帖子,即:https://www.geeksforgeeks.org/sql-join-set-1-inner-left-right-and-full-joins/