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

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

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

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

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

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

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

【问题讨论】:

    标签: google-bigquery


    【解决方案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,我现在已经在我的答案中更改了它。当我说你需要更明确和详细地说明你想问的问题时,你真的必须处理你的问题并解释你的列类型、它们的名称、你的嵌套结构等,而不是简单地发布一半- 可见的屏幕截图,让人们猜测它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多