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

How to ignore corrupted xml row with parse_xml in snowflake

函数 parse_xml 失败并显示消息 解析错误 XML:不是 XML 元素,pos 1,这是由于一个无效xml条目,有没有忽略无效的继续进行的。

这是背景 我通过存储为 varchar 的休息服务将 xml 数据存储到雪花 table 中,进一步选择此数据,解析为 xml 并执行 filtering/processing。函数 parse_xml 在我们的例子中运行良好,但如果任何一个条目无效,它就会放弃。

下面是一个示例查询,我希望忽略“red”和 return“green”而不是抛出错误。

SELECT parse_xml(XML)
FROM
  (SELECT ('<color>green</color>') XML
   UNION SELECT ('red') XML);

check_xml()检查XML的有效性:

SELECT parse_xml(XML)
FROM
  (SELECT ('<color>green</color>') XML
   UNION SELECT ('red') XML)
WHERE check_xml(XML) is NULL ;

这个returns<color>green</color>,随心所欲。