您可以尝试以下代码:
首先创建2个案例类来操纵您的数据框:
case class ResultArray(metric1: Double,metric2: Double,metric3: Double,metric4: Double,metricName: String,opportunityMetricsCol: Array[String])
case class ExpectedResult(value: String)
然后,您可以提取预期的列,如下所示:
val resultArray = Seq(ResultArray(0.55,0.66012,164.8204,4.5,"MetricCalc1",Array("metric1","metric2")),ResultArray(0.55,Array("metric3","metric4")))
+-------+-------+--------+-------+-----------+---------------------+
|metric1|metric2|metric3 |metric4|metricName |opportunityMetricsCol|
+-------+-------+--------+-------+-----------+---------------------+
|0.55 |0.66012|164.8204|4.5 |MetricCalc1|[metric1,metric2] |
|0.55 |0.66012|164.8204|4.5 |MetricCalc1|[metric3,metric4] |
+-------+-------+--------+-------+-----------+---------------------+
val resultArrayDF = resultArray.toDF
val expectedResult: Dataset[ExpectedResult] = resultArrayDF.map{ value =>
val opportunityMetricsCol: util.List[String] = value.getList(5)
ExpectedResult(opportunityMetricsCol.get(0))
}
resultArrayDF.select(expectedResult.first().value).show(false)
expectedResult.show(false)
+-------+
|metric1|
+-------+
|0.55 |
|0.55 |
+-------+
希望这会有所帮助
本文链接:https://www.f2er.com/3137823.html