Как добавить дополнительный тег при создании файла XML из фрейма данных spark

Вот как я создаю XML-файл из парка данных парка

 val FFRowCount = dfMainOutputFinalWithoutNull.groupBy("DataPartition", "StatementTypeCode").count

FFRowCount.coalesce(1).write.format("com.databricks.spark.xml")
  .option("timestampFormat", "yyyy/MM/dd HH:mm:ss ZZ")
  .option("rootTag", "FFFileType")
  .option("rowTag", "FFPhysicalFile")
  .save(descrFileURL)

Это дает мне XML-файл в формате ниже

<FFFileType>
<FFPhysicalFile>
    <DataPartition>Japan</DataPartition>
    <StatementTypeCode>CAS</StatementTypeCode>
    <count>13</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>SelfSourcedPublic</DataPartition>
    <StatementTypeCode>GEO</StatementTypeCode>
    <count>17</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>Japan</DataPartition>
    <StatementTypeCode>BAL</StatementTypeCode>
    <count>24</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>SelfSourcedPublic</DataPartition>
    <StatementTypeCode>BAL</StatementTypeCode>
    <count>11</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>ThirdPartyPrivate</DataPartition>
    <StatementTypeCode>INC</StatementTypeCode>
    <count>21</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>Japan</DataPartition>
    <StatementTypeCode>INC</StatementTypeCode>
    <count>73</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>SelfSourcedPrivate</DataPartition>
    <StatementTypeCode>BAL</StatementTypeCode>
    <count>19</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>Japan</DataPartition>
    <StatementTypeCode>BUS</StatementTypeCode>
    <count>12</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>Japan</DataPartition>
    <StatementTypeCode>GEO</StatementTypeCode>
    <count>13</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>SelfSourcedPrivate</DataPartition>
    <StatementTypeCode>INC</StatementTypeCode>
    <count>42</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>Japan</DataPartition>
    <StatementTypeCode>OPM</StatementTypeCode>
    <count>30</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>SelfSourcedPublic</DataPartition>
    <StatementTypeCode>BUS</StatementTypeCode>
    <count>11</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>Japan</DataPartition>
    <StatementTypeCode>ESG</StatementTypeCode>
    <count>233</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>Japan</DataPartition>
    <StatementTypeCode>PEN</StatementTypeCode>
    <count>7</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>Japan</DataPartition>
    <StatementTypeCode>CUS</StatementTypeCode>
    <count>1</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>SelfSourcedPublic</DataPartition>
    <StatementTypeCode>INC</StatementTypeCode>
    <count>106</count>
</FFPhysicalFile>
<FFPhysicalFile>
    <DataPartition>Japan</DataPartition>
    <StatementTypeCode>FTN</StatementTypeCode>
    <count>2</count>
</FFPhysicalFile>

Но мне нужно отформатировать мой XML-файл, как показано ниже. Который имеет некоторые дополнительные теги и жестко закодированные элементы.

Это следующий формат, который я пытаюсь достичь.

<?xml version="1.0" encoding="UTF-8"?>
<FlatFileDescriptor xmlns="http://">
  <FFId>urn:uuid:0ae79b00-8243-443b-aa03-46b3decac263</FFId>
  <FFTimeStamp>2012-03-20T00:00:00.0Z</FFTimeStamp>
  <FFContentItem ffMajVers="1" ffMinVers="0.0">FinancialLineItem</FFContentItem>
  <FFColumnDelimiter>|^|</FFColumnDelimiter>
  <FFRowDelimiter>|!|\r\n</FFRowDelimiter>
  <FFFileEncoding>UTF-8</FFFileEncoding>
  <FFHeaderRow>true</FFHeaderRow>
  <FFFileType>
    <FFPhysicalFile>
      <FFFileName>Fundamental.FinancialLineItem.FinancialLineItem.ThirdPartyPrivate.BAL.1.2017-11-28-1147.Full.zip</FFFileName>
      <FFRowCount>25166710</FFRowCount>
    </FFPhysicalFile>
    <FFPhysicalFile>
      <FFFileName>Fundamental.FinancialLineItem.FinancialLineItem.ThirdPartyPrivate.BUS.1.2017-11-28-1147.Full.zip</FFFileName>
      <FFRowCount>0</FFRowCount>
    </FFPhysicalFile>

Так классически я хочу добавить некоторые s=constant элемент к его заголовку. Также я хочу отобразить или изменить DataPartition с именем FFFile и считать как FFCount.

Пожалуйста, предложите любой указатель для начала. Должен ли я создать схему для этого?

0 ответов

Другие вопросы по тегам