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 错误 - 标量子查询产生了多个元素的主要内容,如果未能解决你的问题,请参考以下文章

大查询 - 用户定义函数 - 标量子查询错误

Bigquery UDF 重复查询。错误:标量子查询不能超过一列

错误标量子查询在 bigquery 中查询 json 文件

更新后触发,错误:标量子查询只允许返回单行

SQL 查询优化:标量子查询是不是会影响性能?

子查询优化