val keys="DESCRIPTION,NAME".split(",")
inc.as('i).join(fil.as('h), keys.map{primarykey =>
($"i."+primarykey)===($"h."+primarykey)
}.reduce(_&&_) and $"h.ACTIVE_FLAG"==="TRUE","leftouter")
.where(keys.map{ primarykey => ($"h."+primarykey).isNull}.reduce(_&&_))
.select("i.*")
.withColumn("PARTITION_BY_ENDDATE",lit("9999-12-31"))
我试图通过动态传递连接列来连接2个数据帧,是否正在获取异常(org.apache.spark.sql.AnalysisException:属性名称中的语法错误:i .;)。但是当我在连接中对列值进行硬编码时,我以相同的方式工作
(inc.as('i).join(fil.as('h),$"i.NAME"===$"h.NAME" and $"i.DESCRIPTION"===$"h.DESCRIPTION" and $"h.ACTIVE_FLAG"==="TRUE","leftouter").where($"h.DESCRIPTION".isNull and $"h.NAME".isNull).select("i.*").withColumn("PARTITION_BY_ENDDATE",lit("9999-12-31"))))
谁能帮助我解决同样的问题。预先感谢。