有关如何在大查询中选择event_params.key的值的问题

时间:2019-07-06 13:15:19

标签: sql google-bigquery

我们的项目中有一些事件记录用户停留在页面中的时间。我们添加一个名为time_ms的event_params.key,其值显示持续时间。如何选择“ time_ms”的总和?

我尝试使用SQL语句,但失败了。

SELECT *
FROM analytics_152426080.events_20190626
WHERE event_name = 'details_viewtime' AND
      event_params.key = 'time_ms'

它显示错误消息:

'Cannot access field key on a value with type ARRAY<STRUCT<key STRING, value STRUCT<string_value STRING, int_value INT64, float_value FLOAT64, ...>>> at [7:20]'.

我希望得到'time_ms'的总和,但是我应该先解决这个问题。

1 个答案:

答案 0 :(得分:0)

我认为您需要helm install

unnest

我不确定实际值在哪里,但是像这样:

SELECT *
FROM analytics_152426080.events_20190626 e CROSS JOIN
     UNNEST(event_params) ep
WHERE e.event_name = 'details_viewtime' AND
      ep.key = 'time_ms';

假设您要求和的值是一个整数。

这假定value列是某种数字。否则,您需要将其转换为一个。

或者,如果要对每行的值求和:

SELECT SUM(ep.value.int_value)
FROM analytics_152426080.events_20190626 e CROSS JOIN
     UNNEST(event_params) ep
WHERE ep.event_name = 'details_viewtime' AND
      ep.key = 'time_ms';