大查询,错误:标量子查询产生了多个元素
Posted
技术标签:
【中文标题】大查询,错误:标量子查询产生了多个元素【英文标题】:Big Query, Error: Scalar subquery produced more than one element 【发布时间】:2018-07-24 13:46:25 【问题描述】:我有一个查询遇到此错误消息: 错误:标量子查询产生了多个元素
我想加入代表在不同时间段发生的行为的表格,但正常的加入似乎不起作用:
选择 a.g, count(*) from
(选择user_id作为用户,
(选择 x.value.string_value from
analytics_156934592.events_20180701
, unnest(event_params) as x where x.key = 'group') as g,(选择 x.value.string_value from
analytics_156934592.events_20180701
, unnest(event_params) as x where x.key = 'operation') 作为操作来自
analytics_156934592.events_20180701
其中 event_name = 'book_now')a加入
(选择user_id作为用户,
(选择 x.value.string_value from
analytics_156934592.events_20180702
, unnest(event_params) as x where x.key = 'operation') 作为操作来自
analytics_156934592.events_20180702
其中 event_name = 'book_now')ba.user = b.user
其中 a.operation = 'no_car' 和 b.operation = 'confirm'
按 a.g 分组
不确定这是否是使用 Big Query 标准 Sql 进行联接的正确方法 以前类似问题的解决方案也对我不起作用。
感谢您的帮助!
【问题讨论】:
错误信息很清楚,您在 select 子句中的一个或多个子查询正在生成多个值。一定有比现在更好的方法来制定您的查询。 简化您的查询并找出问题所在。 您可以在子查询中使用前 1 来解决问题,但您需要详细检查这些子查询,因为您可能会得到错误的数据 谢谢大家!我得到了如下解决方案。 【参考方案1】:谢谢大家!
我从朋友那里得到了一个解决方案,并且是可行的:
select count(distinct a.user), count(distinct b.user_id)
from
(select
user_id as user
from `analytics_156934592.events_20180707`
join unnest(event_params) as x
join unnest(event_params) as y
where event_name = 'book_now'
and x.key = 'group'
and x.value.string_value = 'a'
and y.key = 'operation'
and y.value.string_value = 'no_car')a
left join
(select
user_id , event_date
from `analytics_156934592.events_*`
join unnest(event_params) as y
where event_name = 'launcher'
and y.key = 'operation'
and y.value.string_value = 'show'
AND REGEXP_EXTRACT(_TABLE_SUFFIX, r'(\d+)') BETWEEN '20180708' and '20180720')b
on a.user = b.user_id
【讨论】:
以上是关于大查询,错误:标量子查询产生了多个元素的主要内容,如果未能解决你的问题,请参考以下文章