我试图在读取json资源文件后生成数据帧。我的json文件包含相关属性,并且在使用withColumn时,我需要获取列值来创建另一个列名。
您可以在下面找到我现在正在做的事情:
val getInfo= df
.withColumn("transactions", explode($"transactions"))//this is array
.withColumn("id", $"transactions.data.profile.id")
.withColumn("totalAmounts", explode($"transactions.data.activity.total"))
.withColumn("amount", $"totalAmounts.amount")
.withColumn("code", $"totalAmounts.code")
.withColumn("category", $"totalAmounts.category")
.withColumn("createdAt", $"transactions.data.meta.created.at")
.withColumn("relatedDetails", explode($"transactions.data.related"))
.withColumn("resourceId", $"relatedDetails.id")
.withColumn("mainType", $"relatedDetails.type")
.withColumn("subType", $"transactions.data.subType")
.drop("transactions")
.drop("totalAmounts")
.drop("relatedDetails")
.as[TransactionData]
.toDF()
上面的代码对我来说还可以,但是json文件中有一个动态生成的属性。 当我要添加另一列“ transactionType”时,该列取决于“ resourceId”列的值。
我需要做的如下:
.withColumn("transactionType",$"transactions.included.transactionDetail.<<resourceId value>>.transactionType") .