我正在尝试在xml下面获取ap id值,但返回NULL。请帮忙。如果可能的话,请给我发送扁平化查询,以扁平化雪花中的以下xml文件。我对雪花很陌生,您的任何帮助将不胜感激。这是因为字段名称“ ap id”中的空格吗?我不信。如何处理XML文件中雪花中带有空格的字段名称?
从以下位置选择GET(lvl,'@ ap id'):: integer作为“ ap id” (SELECT src:“ $” as lvl FROM XMLDATA);
SELECT XMLGET(SRC,'ap id'):“ @”作为“ ap id” 来自XMLDATA;
选择 GET(src,'@ap id'):: integer as ap_id 来自XMLDATA;
答案 0 :(得分: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;
希望有帮助。