Spark SQL (Databricks) 函数 xpath 忽略 XML 中的空标签

Spark SQL (Databricks) function xpath ignores empty tags in XML

Spark SQL (Databricks) 函数 xpath 忽略 XML 中的空标签。例如下面 XML XPATH returns 数组 ["ABC"]。我们需要它作为 ["ABC", NULL 或空字符串],因为当我们将它与 posexplode_outer 一起使用时,在 XPATH 中省略 null 将导致不正确的关联。 XPATH 中是否有保留空值的选项?我没有找到这方面的任何详细文档。


SELECT xpath("<PARTY>
                <PARTY_EVENT>
                    <EVENTTYPE>VISITED</EVENTTYPE>
                    <LOCATION>ABC</LOCATION>
                </PARTY_EVENT>
                <PARTY_EVENT>
                    <EVENTTYPE>VISITED</EVENTTYPE>
                    <LOCATION />
                </PARTY_EVENT>
                </PARTY>"
        , '/PARTY/PARTY_EVENT/LOCATION/text()')

使用[not(text())]选择器添加不包含任何文本的节点:

(/PARTY/PARTY_EVENT/LOCATION|/PARTY/PARTY_EVENT/LOCATION[not(text())])/text()