我的問題是我有一個代碼,它將串列中的過濾列和值作為引數
val vars = "age IN ('0')"
val ListPar = "entered_user,2014-05-05,2016-10-10;"
//val ListPar2 = "entered_user,2014-05-05,2016-10-10;revenue,0,5;"
val ListParser : List[String] = ListPar.split(";").map(_.trim).toList
val myInnerList : List[String] = ListParser(0).split(",").map(_.trim).toList
if (myInnerList(0) == "entered_user" || myInnerList(0) == "date" || myInnerList(0) == "dt_action"){
responses.filter(vars " AND " responses(myInnerList(0)).between(myInnerList(1), myInnerList(2)))
}else{
responses.filter(vars " AND " responses(myInnerList(0)).between(myInnerList(1).toInt, myInnerList(2).toInt))
}
除了包含日期的欄位之外的所有欄位都可以正常作業,但對于具有日期的欄位會引發錯誤
注意:我正在使用鑲木地板檔案,這是錯誤
當我嘗試手動撰寫它時,我得到了相同的結果
這是它發送到sparkSQL的查詢的第一個有收入的查詢,但第二個不起作用
當我嘗試只過濾沒有包含其他列的“vars”值的日期時,它可以作業

uj5u.com熱心網友回復:
好吧,我的問題是我在 sql 和 spark 之間混合,當我嘗試連接 sql 查詢時,這是我的變數“vars”,帶有 df.filter(),特別是當我在運算子之間使用時,它給出了 sparksql 無法識別的輸出格式是
年齡 IN ('0') AND ((entered_user >= 2015-01-01) AND (entered_user <= 2015-05-01))
它可能看起來是正確的,但在查看 sql 檔案后它缺少括號(在 vars 中)它需要
(年齡在('0'))AND((entered_user >= 2015-01-01)AND(entered_user <= 2015-05-01))
那么解決方案是我需要正確地連接這些,所以我必須將“expr”添加到變數 vars 中,這將產生期望的語法
response.filter(expr(vars) && 回應(myInnerList(0)).between(myInnerList(1), myInnerList(2)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/448833.html
上一篇:TypeError:日期時間減法只能應用于日期時間序列
下一篇:如何顯示長度不同的陣列資料
