无法使用横向展平等查询半结构化数据

问题描述 投票:0回答:1

我在表中有一些数据,其中一列是Variant,其中包含大量的JSON数据。我可以成功地展平数组,以及数组中的数组以访问其中的数据,但是我正努力展平键值对以访问给定键的值。

[我已经看到https://docs.snowflake.net/manuals/user-guide/json-basics-tutorial.html处的文档将此映射到我的用例上,结果中的值为NULL。

我的变量在下面部分显示-特别是它的值,例如MatchStatus以及我感兴趣提取的变量下的键/值。

感谢您提供任何有用的建议。

enter image description here

snowflake-data-warehouse flatten variant
1个回答
0
投票

描述的JSON具有简单的类似路径的结构,其中对象处于不同级别(并且没有数组)。

Snowflake's semi-structured data documentation,使用点符号来提取(平坦嵌套的)路径后的值:

Insert a colon : between the VARIANT column name
and any first-level element: <column>:<level1_element>.

Use dot notation to traverse a path in a JSON object:
<column>:<level1_element>.<level2_element>.<level3_element>.

一个例子是(请注意第三和第四行中点的连锁使用:]

SELECT
  badminton_odds:Id as id,
  badminton_odds:PricingRequest.MatchStatus as match_status,
  badminton_odds:PricingRequest.Variables.Dispersion as var_dispersion
FROM odds_table

您不需要FLATTEN即可进行简单的奇异值提取。当需要将一些系列数据分解为多行时(例如,在数组的情况下),请使用FLATTEN。

例如,如果问题中描述的JSON是单个数组元素在此类对象的长数组中的外观,则可以使用FLATTEN首先将整个数组分成几行,然后应用路径样式提取来检索值从每一行。

© www.soinside.com 2019 - 2024. All rights reserved.