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()
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()