雪花 XML 解析返回 NULL - 字段名称中的空格?

Posted

技术标签:

【中文标题】雪花 XML 解析返回 NULL - 字段名称中的空格?【英文标题】:snowflake XML Parsing returns NULL - SPACE in field name? 【发布时间】:2020-01-03 19:33:17 【问题描述】:

我试图在下面的 xml 中获取 ap id 值,但返回 NULL。请帮忙。如果可能,请向我发送一个展平查询以展平雪花中的以下 xml 文件。我对雪花非常陌生,您的任何帮助将不胜感激。这是因为字段名称“ap id”中的空格吗?我不信。如何处理 XML 文件雪花中带空格的字段名?

选择 GET(lvl,'@ap id')::integer 作为 "ap id" from (SELECT src:"$" as lvl FROM XMLDATA);

SELECT XMLGET(SRC, 'ap id' ):"@" as "ap id" 来自 XML 数据;

选择 GET(src, '@ap id')::integer as ap_id 来自 XML 数据;

【问题讨论】:

【参考方案1】:

你可以试试:

select src:"$"."@id" as app_id
from xmldata;

这是一种通过展平和搜索已知值来查找路径的方法:

with xmldata as (
    select parse_xml('<amp_ap_detail><ap id="1610">asdf</ap></amp_ap_detail>') src
)
select path, value 
from xmldata, lateral flatten(input=>xmldata.src, recursive=>true) f
where value = 1610;

在这种情况下产生:

PATH            VALUE
['$']['@id']    1610

将 PATH 映射到 Snowflake 的字段标识符表示法...

with xmldata as(
    select parse_xml('<amp_ap_detail><ap id="1610">asdf</ap></amp_ap_detail>') src
)
select src:"$"."@id" as app_id
from xmldata;

希望对您有所帮助。

【讨论】:

以上是关于雪花 XML 解析返回 NULL - 字段名称中的空格?的主要内容,如果未能解决你的问题,请参考以下文章

从 XML 获取数据 - XMLGet 函数使用属性名称及其在雪花中的值

在雪花中提取 XML 数据

如何从雪花中的数据库模式中检索所有表名

查询雪花中的半结构化字段

iOS后台返回某些字段值为null的处理

如何在雪花中使用 parse_xml 忽略损坏的 xml 行