我目前正在从一个excel表导入数据集,该表的列名带有如下点字符 ".xyz"
.
我问了几个stackoverflow问题,它说我们可以用带反勾的列名替换它,如下所示: "'.xyz'"
. 因此,我重命名了所有的列名,这些列名中有一个点,名称相同,但用反记号括起来,如下所示:
df.columns.foreach(item => {
if(item.contains("."))
{
df.withColumnRenamed(item, s"`$item`")
}
})
现在,当我在constraintsuggestionrunner类中传递这个Dataframe时,如下所示:
val suggestionResult = ConstraintSuggestionRunner()
.onData(df)
.addConstraintRules(Rules.DEFAULT)
.setKLLParameters(KLLParameters(sketchSize = 2048, shrinkingFactor = 0.64, numberOfBuckets = 10))
.run()
我遇到了如下错误:
错误main:org.apache.spark.sql.analysisexception:无法解析 '
.xyz'
给定输入列:
如何解决此错误?
1条答案
按热度按时间bn31dyow1#
逃逸必须在deequ处理,但问题总是公开的。您在这里所做的是添加反勾号作为列名的一部分,而不是转义它们。
你可以试着用另一个类似于下划线的大篷车来代替这些点
_
然后将带有重命名列的Dataframe传递给ConstraintSuggestionRunner
: