Sql 在大查询中使用指定的event.value.string\u值计算事件
这是我们的后续问题 我有一个问题:Sql 在大查询中使用指定的event.value.string\u值计算事件,sql,google-bigquery,Sql,Google Bigquery,这是我们的后续问题 我有一个问题: WITH user_summary AS ( SELECT geo.country as country, platform, event_date, user_pseudo_id, MAX(CASE WHEN event_name = 'session_start' THEN 1 ELSE 0 end) AS `has_session_start`, MAX(CASE WHEN
WITH
user_summary
AS
(
SELECT
geo.country as country,
platform,
event_date,
user_pseudo_id,
MAX(CASE WHEN event_name = 'session_start' THEN 1 ELSE 0 end) AS `has_session_start`,
MAX(CASE WHEN event_name = 'purchase_preview_page' THEN 1 ELSE 0 end) AS `has_purchase_preview_page`,
MAX(CASE WHEN event_name = 'purchase_trial_activated' THEN 1 ELSE 0 end) AS `has_purchase_trial_activated`,
MAX(CASE WHEN event_name = 'purchase_completed' THEN 1 ELSE 0 end) AS `has_purchase_completed`
FROM
`project.dataset*`
WHERE
event_date > '20200101'
GROUP BY
geo.country,
platform,
event_date,
user_pseudo_id
)
SELECT
country,
platform,
event_date,
SUM(has_session_start) AS count_session_start,
SUM(has_purchase_preview_page) AS count_purchase_preview_page,
SUM(has_purchase_trial_activated) AS count_purchase_trial_activated,
SUM(has_purchase_completed) AS count_purchase_completed,
SUM(has_purchase_trial_activated * has_purchase_completed) AS count_trial_activated_and_purchased
FROM
user_summary
GROUP BY
country,
platform,
event_date
返回:
我现在想更新查询,只计算那些已经购买的商品
event_params.value.string_value like '%subscription%'
该事件的存储方式如下:
我补充说:
...
MAX(CASE WHEN event_name = 'purchase_completed' and ep.value.string_value like '%subscription%' THEN 1 ELSE 0 end) AS `has_purchase_completed`
FROM
`project.dataset.*`
CROSS JOIN
UNNEST(event_params) ep
...
这是只计算具有指定的事件参数值.string\u值的事件的正确方法吗
我不确定这里的交叉连接用法,但这就是我看到的一个例子,为了避免出现此错误,我使用了事件参数值和键:
无法访问数组类型为[3:20]的值上的字段值
使用时:
SELECT *
FROM `project.dataset.events_20210207`
WHERE event_params.value. string_value like '%subscription%';
使用子查询可能会更快:
...
MAX(CASE WHEN event_name = 'purchase_completed' and exists(select 1 from UNNEST(event_params) as e where e.value.string_value like '%subscription%') THEN 1 ELSE 0 end) AS `has_purchase_completed`
....
这不起作用,因为event_params
不是表。哎呀。。。添加了unest