BigQuery 错误 - 标量子查询产生了多个元素
Posted
技术标签:
【中文标题】BigQuery 错误 - 标量子查询产生了多个元素【英文标题】:BigQuery Error - Scalar Subquery produced more than one element 【发布时间】:2021-05-27 10:12:06 【问题描述】:我正在尝试使用以下查询更新 bigquery 中的列。但它正在生成 BigQuery 错误 - Scalar Subquery 产生了多个元素, 这也专门针对这个子查询(Select * from unnest(array(Select to_json_String(JSON_EXTRACT_SCALAR(c.raw,'$.C360ServiceError.serviceName'),true) 从 tableabc 作为 c 其中 c.trace_id=a.trace_id)。你能帮忙吗
完整的查询是:-
更新tableabc
放
a.Link=CONCAT("a",(Select split(TopicName, '/')[OFFSET(1)] from tableabc As b where b.trace_id=a.trace_id ),
'字符串 abc',
(Select split(TopicName, '/')[OFFSET(1)] from tableabc As b where b.trace_id=a.trace_id ),'""',
'字符串定义',
((Select * from unnest(array(Select to_json_String(JSON_EXTRACT_SCALAR(c.raw,'$.C360ServiceError.serviceName'),true)
从 tableabc as c where c.trace_id=a.trace_id)))), '"%0A"')
在哪里
DATE(a.logDate) 在 CURRENT_DATE("Asia/Kolkata")-3 和 CURRENT_DATE("Asia/Kolkata") 之间
【问题讨论】:
【参考方案1】:UNNEST 函数返回多个值,这是不允许的,我相信因为您正在取消嵌套数组,根据我的经验,对表使用 unnest,然后使用数组以避免错误。
试试下面的,现在请告诉我结果。
UPDATE tableabc a
SET a.link=concat("a",
(
SELECT Split(topicname, '/')[OFFSET(1)]
FROM tableabc AS b
WHERE b.trace_id=a.trace_id ), 'String abc',
(
SELECT Split(topicname, '/')[OFFSET(1)]
FROM tableabc AS b
WHERE b.trace_id=a.trace_id ),'""', 'String def', (
(
SELECT *
FROM array
(
select to_json_string(json_extract_scalar(c.raw,'$.C360ServiceError.serviceName'),true)
FROM (unnest tableabc AS c WHERE c.trace_id=a.trace_id)))), '"%0A"')
WHERE date(a.logdate) BETWEEN CURRENT_DATE("Asia/Kolkata")-3 AND CURRENT_DATE("Asia/Kolkata")
问候:)
【讨论】:
您好罗伯托,感谢您的回复。我试过这个,但它给了我一个错误 unnest cannot be applied on a table。非常感谢您的回复。以上是关于BigQuery 错误 - 标量子查询产生了多个元素的主要内容,如果未能解决你的问题,请参考以下文章