问题:-当我尝试通过SelectExpr中的参数输入列名称时,出现“输入不匹配',期望为”错误。
这里是上下文:-
我正在尝试使用Merge来实现CDC,类似于下面的代码。
val latestChangeForEachKey = changesDF
.selectExpr("key", "struct(time, newValue, deleted) as otherCols" )
.groupBy("key")
.agg(max("otherCols").as("latest"))
.selectExpr("key", "latest.*")
参考-https://docs.databricks.com/_static/notebooks/merge-in-cdc.html
我有多个关键字列,为了对其进行参数化,我正在通过一个名为getProperty的自定义函数通过外部属性文件读取它们。并且属性被正确读取。在下面的代码中,keyCols读为==>“ HUP_SEQ_NO”,“ PRODUCT_TYPE”,“ SUBSCRIBER_NO”,“ BAN”。如果我不进行参数化并给出键列的实际值,则代码可以正常工作,但是在对它们进行参数化后,我会收到如下错误:-
预期的输入','不匹配(行1,行12)
== SQL ==
“ HUP_SEQ_NO”,“ PRODUCT_TYPE”,“ SUBSCRIBER_NO”,“ BAN”
------------ ^^^ 我的代码如下:-
val keyCols = tableProp.getProperty("keyCols")
var DF2 = DF1.selectExpr(keyCols,"struct(colA, colB, colC,...)as otherCols").groupBy(keyCols).agg(max("otherCols").as("latest")).selectExpr(keyCols,"latest.*")
我对火花和数据块还很陌生,希望能获得任何指导。