def(df:DataFrame):DataFrame = {
val emptyDf = Seq.empty[(Long,String)].toDF()
val p1 = "('2005-01-01')"
val p2 = "('2005-12-31')"
val query = sqlContext.sql(s""" select * from ${emp} where ${dt} between ${p1} and ${p2} """)
for((i,j)<-k) {
some operation
}
emptyDf
}
这个逻辑正在运行,但我希望每次迭代都将参数p1
和p2
传递到2018年。在这里,我需要每次迭代需要14次迭代来替换下一年的值。我怎样才能做到这一点?
答案 0 :(得分:1)
您只需使用年()功能来比较年份,而不是传递整个范围。 here
def(df:DataFrame):DataFrame = {
val emptyDf = Seq.empty[(Long,String)].toDF()
val p = "'2005'"
val query = sqlContext.sql(s""" select * from ${emp} where year(${dt}) = ${p} """)
for((i,j)<-k) {
some operation
}
emptyDf
}
答案 1 :(得分:0)
您可以使用p1和p2的可能组合构建一个元组数组,并遍历数组以构建查询并对数组中的每个元素执行。
像
这样的东西Map<String,String> maps = environment.getProperty("application.address",HashMap.class); //got null
可以手动构建数组,也可以使用日期函数来添加/减去日期中的月/年。