无法使用横向展平等查询半结构化数据
Can't query semi-structured data using lateral flatten etc
我在 table 中得到了一些数据,其中一列是一个包含大量 JSON 数据的变体。我可以成功地展平数组和数组中的数组以访问其中的数据,但我正在努力展平键值对以访问给定键的值。
我在 https://docs.snowflake.net/manuals/user-guide/json-basics-tutorial.html 看到文档将其映射到我的用例导致结果中出现 NULL 值。
我的变体部分显示在下面 - 特别是它的值,如 MatchStatus 和我有兴趣提取的变量下的 key/values。
感谢任何有用的建议。
所描述的 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 先将整个数组分解为行,然后应用路径样式提取以从每一行中检索值。
我在 table 中得到了一些数据,其中一列是一个包含大量 JSON 数据的变体。我可以成功地展平数组和数组中的数组以访问其中的数据,但我正在努力展平键值对以访问给定键的值。
我在 https://docs.snowflake.net/manuals/user-guide/json-basics-tutorial.html 看到文档将其映射到我的用例导致结果中出现 NULL 值。
我的变体部分显示在下面 - 特别是它的值,如 MatchStatus 和我有兴趣提取的变量下的 key/values。
感谢任何有用的建议。
所描述的 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 先将整个数组分解为行,然后应用路径样式提取以从每一行中检索值。