Arrays 在Postgres 9.4中解析4-deep嵌套json数组
我需要一些解析json的帮助,以便对其进行分析。这是位置随附的远程站测量数据 我必须回答两个简单的问题,到目前为止,我已经做到了,但这让我的大脑无法理解其中的一些行为 嵌套数组(四个深度)是主要问题。我不明白为什么jsonb_数组_元素调用上的横向联接不能起作用 我用的是postgres 9.4.4 下面是示例json,我正在尝试使用的pg/sql也是示例json 下面是示例json。数据的解剖/规格和一个漂亮的版本可以在下面找到: { “SiteRep”:{ “Wx”:{ “参数”:[ { “名称”:“D”, “单位”:“指南针”, “$”:“风向” }, { “名称”:“H”, “单位”:“%”, “$”:“屏幕相对湿度” } ] }, “DV”:{ “数据日期”:“2014-09-23T20:00:00Z”, “类型”:“O”, “地点”:[ { “i”:“3002”, “lat”:“60.749”, “lon”:“-0.854”, “名称”:“巴尔塔松”, “国家”:“苏格兰”, “大陆”:“欧洲”, “标高”:“15.0”, “期间”:[ { “类型”:“天”, “价值”:“2014-09-22Z”, “代表”:[ { “D”:“SSW”, “H”:“88.5”, "$": "1200" }, { “D”:“S”, “H”:“91.6”, "$": "1260" }, { “D”:“SSW”, “H”:“92.8”, "$": "1320" }, { “D”:“W”, “H”:“92.8”, "$": "1380" } ] }, { “类型”:“天”, “价值”:“2014-09-23Z”, “代表”:[ { “D”:“W”, “H”:“88.5”, "$": "0" }, { “D”:“W”, “H”:“86.7”, "$": "60" }, { “D”:“W”, “H”:“86.2”, "$": "120" }, { “D”:“WSW”, “H”:“87.9”, "$": "180" } ] } ] }, { “i”:“3005”, “lat”:“60.139”, “lon”:“-1.183”, “名称”:“勒威克(南屏幕)”, “国家”:“苏格兰”, “大陆”:“欧洲”, “标高”:“82.0”, “期间”:[ { “类型”:“天”, “价值”:“2014-09-22Z”, “代表”:[ { “D”:“SSW”, “H”:“95.3”, "$": "1200" }, { “D”:“SSW”, “H”:“97.4”, "$": "1260" }, { “D”:“SW”, “H”:“97.3”, "$": "1320" }, { “D”:“W”, “H”:“94.1”, "$": "1380" } ] }, { “类型”:“天”, “价值”:“2014-09-23Z”, “代表”:[ { “D”:“WNW”, “H”:“89.1”, "$": "0" }, { “D”:“WNW”, “H”:“88.0”, "$": "60" }, { “D”:“W”, “H”:“90.9”, "$": "120" }, { “D”:“W”, “H”:“90.9”, "$": "180" } ] } ] } ] } } } 我正在加载此代码:Arrays 在Postgres 9.4中解析4-deep嵌套json数组,arrays,json,postgresql,nested,Arrays,Json,Postgresql,Nested,我需要一些解析json的帮助,以便对其进行分析。这是位置随附的远程站测量数据 我必须回答两个简单的问题,到目前为止,我已经做到了,但这让我的大脑无法理解其中的一些行为 嵌套数组(四个深度)是主要问题。我不明白为什么jsonb_数组_元素调用上的横向联接不能起作用 我用的是postgres 9.4.4 下面是示例json,我正在尝试使用的pg/sql也是示例json 下面是示例json。数据的解剖/规格和一个漂亮的版本可以在下面找到: { “SiteRep”:{ “Wx”:{ “参数”:[ { “
drop table if exists foo;
create table public.foo (data jsonb);
truncate foo;
copy foo from <example json as above>
DELIMITERS e'\x02';
注意,第二个横向连接已注释掉。马上就有更多
上面的调用返回两行:
location_date | i | lat | lon | p_value | type | value
------------------------+--------+----------+----------+---------+------+---------------------------------------------------------------------
"2014-09-23T20:00:00Z" | "3002" | "60.749" | "-0.854" | | | {"i": "3002", "lat": "60.749", "lon": "-0.854", "name": "BALTASO...
"2014-09-23T20:00:00Z" | "3005" | "60.139" | "-1.183" | | | {"i": "3005", "lat": "60.139", "lon": "-1.183", "name": "LERWICK...
现在,如果我取消注释第二个横向联接,它将返回零行:
location_date | i | lat | lon | value | type | value
---------------+---+-----+-----+-------+------+-------
(0 rows)
然而,如果我看一下“data”->“SiteRep”->“DV”->“Location”->“Period”的值是什么,就会知道我在它上面调用的jsonb_数组元素是什么:
i | Period
--------+---------------------------------------------------------------------
"3002" | [{"Rep": [{"$": "1200", "D": "SSW", "H": "88.5"}, {"$": "1260", ...
"3005" | [{"Rep": [{"$": "1200", "D": "SSW", "H": "95.3"}, {"$": "1260", ...
我认为这应该是好的
知道我做错了什么吗?知道如何将多个嵌套数组解析为表吗
我尝试过,但无法将这些解决方案应用于我的json,因为它们不够深入,或者我误解了我的json。json的剖析可以在页面底部找到
i | Period
--------+---------------------------------------------------------------------
"3002" | [{"Rep": [{"$": "1200", "D": "SSW", "H": "88.5"}, {"$": "1260", ...
"3005" | [{"Rep": [{"$": "1200", "D": "SSW", "H": "95.3"}, {"$": "1260", ...