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

Posted

技术标签:

【中文标题】错误标量子查询在 bigquery 中查询 json 文件【英文标题】:Error scalar subquery querying json file in bigquery 【发布时间】:2019-09-16 00:28:09 【问题描述】:

我是 bigquery 的初学者!我在 bigquery 中有这个 json 文件:

我想取消所有列的嵌套,我正在尝试以下查询:

SELECT *,
    (SELECT AS STRUCT * FROM UNNEST(list)) 
FROM `project.dataset.table`

但是,我收到了这个错误:

标量子查询产生了多个元素

我已经阅读了所有其他具有上述相同错误的帖子,但没有一个对我有帮助

【问题讨论】:

【参考方案1】:
#standardSQL
SELECT city.*,
       sys.pod, clouds.all, list.dx_txt, weather.description, weather.icon, weather.main
FROM `project.dataset.table`, 
UNNEST(list.weather) weather, UNNEST(list.sys) sys, UNNEST(list.clouds) clouds

【讨论】:

您的查询无效。我收到此错误:“UNNEST 中引用的值必须是数组。UNNEST 包含 STRUCT 类型的表达式”【参考方案2】:

看起来ListSTRUCTARRAY,而city 只是STRUCT。请确保您努力解释表格列的详细信息/类型以及您对 SO 提出问题的理由。

试试这个:

SELECT 
    city.id as city_id,
    city.sunset as sunset,
    city.country as country, 
    city.timezone as timezone, 
    city.name as name, 
    city.coord.lon as lon, 
    city.coord.lat as lat, 
    city.sunrise as sunrise, 
    weather.description,
    weather.icon,
    weather.main,
    list.dt_txt,
    list.clouds.all,
    list.sys.pod
FROM `project.dataset.table`, UNNEST(list) as list, UNNEST(list.weather) as weather

希望对你有帮助。

【讨论】:

“您对 SO 的问题的基本原理”是什么意思?在您的代码稍作调整后,我在字段 list.dx_txt 中收到此错误:“字段名称 dx_txt 不存在于 STRUCT、云 STRUCTallINT64>、dt_txt TIMESTAMP、...> ; 你的意思是 dt_txt? at [14:9]" 该字段的类型为:TIMESTAMP,模式:NULLABLE 和描述:bq-datetime。我正在寻找如何解决,但我还没有找到任何答案。感谢您的帮助。 我进行了修复。让我知道它是否有效。通过“您的问题的基本原理”,我的意思是您的查询背后的目标(例如您希望在输出中实现什么,预期的输出是什么,表架构是什么等),这使得回答更容易问题与查看屏幕截图以确定列类型相比。 你放了同样的代码!和你第一次放的代码相比,区别在哪里?我解释说那不能正常工作!这就是为什么我做了一个调整,现在只有一个错误:“字段名 dx_txt 不存在于 STRUCT, cloud STRUCTall INT64>, dt_txt TIMESTAMP, ...>; 你有没有在“list.dt_txt”字段中的意思是 dt_txt? at [14:9]”。根据图像和您的答案,您已经完全理解了我需要什么,所以我想不需要更多细节。还是非常感谢。最好的问候 因为在您发布的屏幕截图中,您的列名看起来像dt_txt,我现在已经在我的答案中更改了它。当我说你需要更明确和详细地说明你想问的问题时,你真的必须处理你的问题并解释你的列类型、它们的名称、你的嵌套结构等,而不是简单地发布一半- 可见的屏幕截图,让人们猜测它。

以上是关于错误标量子查询在 bigquery 中查询 json 文件的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 错误 - 标量子查询产生了多个元素

大查询,错误:标量子查询产生了多个元素

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

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

什么是快乐星球?什么又是“标量子查询”呢?

mysql 标量子查询和非法子查询