我有一個串列,我想決議它的元素和子元素并將它們作為資料框查詢的變數提供,但我得到一個錯誤,任何人都可以幫助這里是我的代碼
val ListParser = ("age,15,20","revenue,1,2")
val vars = "category in (1,2,4)"
val resultQuery : Dataset[Row] =
if(ListParser.size == 0){
responses.filter(vars)
}else if(ListParser.size == 1){
responses.filter(vars " AND " responses(ListParser(0)).between(ListParser(1).toInt, ListParser(2).toInt))
}else if(ListParser.size >= 2){
responses.filter(vars " AND " {for(a <- ListParser){
val myInnerList : List[String] = a.split(",").map(_.trim).toList
responses(myInnerList(0)).between(myInnerList(1).toInt,myInnerList(2).toInt)
}})
}else{
responses.filter(vars)
}
我還有另一個問題,我只希望 response.filter() 的值在 resultQuery val 中
uj5u.com熱心網友回復:
您似乎將 SQL 語法與 spark 物件語法混合在一起
嘗試(listParser.map( s => {val l =s.split(","); s"""${l(0)} between (${l(1)},${l(2)})"""}) : vars).mkString(" AND ")(假設 listParser 確實是一個串列而不是一個元組)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/450961.html
標籤:斯卡拉
上一篇:在Scala中使用testcontainers指定容器名稱
下一篇:從Refined獲取謂詞
