Выровнять массив в отчете о доходности в Scala - PullRequest
1 голос
/ 16 января 2020

У меня есть следующий фрагмент кода

var splitDf = fullCertificateSourceDf.map(row => {
  val ID = row.getAs[String]("ID")
  val CertificateID = row.getAs[String]("CertificateID")
  val CertificateTag = row.getAs[String]("CertificateTag")
  val CertificateDescription = row.getAs[String]("CertificateDescription")
  val WorkBreakdownUp1Summary = row.getAs[String]("WorkBreakdownUp1Summary")
  val ProcessBreakdownSummaryList = row.getAs[String]("ProcessBreakdownSummaryList")
  val ProcessBreakdownUp1SummaryList = row.getAs[String]("ProcessBreakdownUp1SummaryList")
  val ProcessBreakdownUp2Summary = row.getAs[String]("ProcessBreakdownUp2Summary")
  val ProcessBreakdownUp3Summary = row.getAs[String]("ProcessBreakdownUp3Summary")
  val ActualStartDate = row.getAs[java.sql.Date]("ActualStartDate")
  val ActualEndDate = row.getAs[java.sql.Date]("ActualEndDate")
  val ApprovedDate = row.getAs[java.sql.Date]("ApprovedDate")
  val CurrentState = row.getAs[String]("CurrentState")
  val DataType = row.getAs[String]("DataType")
  val PullDate = row.getAs[String]("PullDate")
  val PullTime = row.getAs[String]("PullTime")

  val split_ProcessBreakdownSummaryList = ProcessBreakdownSummaryList.split(",")
  val split_ProcessBreakdownUp1SummaryList = ProcessBreakdownUp1SummaryList.split(",")

  val Pattern = "^.*?(?= - *[a-zA-Z])".r

  for{
        subSystem : String <- split_ProcessBreakdownSummaryList
      } yield(ID,
              CertificateID,
              CertificateTag,
              CertificateDescription,
              WorkBreakdownUp1Summary,
              subSystem,
              for{ system: String <- split_ProcessBreakdownUp1SummaryList if(system contains subSystem.trim().substring(0,11))}yield(system),
              ProcessBreakdownUp2Summary,
              ProcessBreakdownUp3Summary,
              ActualStartDate,
              ActualEndDate,
              ApprovedDate,
              CurrentState,
              DataType,
              PullDate,
              PullTime
             )
}).flatMap(identity(_))

display(splitDf)

Как я могу получить первый соответствующий элемент из следующей части приведенного выше утверждения:

for{ system: String <- split_ProcessBreakdownUp1SummaryList if(system contains subSystem.trim().substring(0,11))}yield(system)

В данный момент он возвращается массив с одним элементом в нем. Я не хочу массив, я просто хочу элемент.

Заранее спасибо.

...