hari-prasad
Valued Contributor II

@BNV , little more complex querying to convert XML into rows use below query. For your case just replace XML string with column containing XML value, spark will handle.

select c_value as colID, v_value as value from(select
  posexplode(
    xpath(
      '''
      <XMLData>
      <Values>
      <ValueDefinition colID="10" Value="Red"/>
      <ValueDefinition colID="20" Value="Square"/>
      <ValueDefinition colID="3" Value=""/>
      </Values>
      </XMLData>''',
      '//ValueDefinition/@colID'
    )
  ) as (c_index, c_value),
  posexplode(
    xpath(
      '''
      <XMLData>
      <Values>
      <ValueDefinition colID="10" Value="Red"/>
      <ValueDefinition colID="20" Value="Square"/>
      <ValueDefinition colID="3" Value=""/>
      </Values>
      </XMLData>''',
      '//ValueDefinition/@Value'
    )
  ) as (v_index, v_value))
  where c_index = v_index

 

Regards,

Hari Prasad



Regards,
Hari Prasad