sparkSQL中的UDF是否可以使用查询语句传参

新手上路,请多包涵

使用sparkSQL写过一个UDF,根据业绩计算提成,但是现在需求变了,根据职位和部门确定提成比例,下面举个例子

spark.udf.register("mmyjtc", (yj: Float) => {
  (yj) match {
    case v if (v <= 6000) => {
      v * 0.10
    }
    case v if (v > 6000 && v <= 10000) => {
      v * 0.13
    }
    case v if (v > 10000 && v <= 20000) => {
      v * 0.20
    }
    case v => -1.0
  }
})

这是以前的UDF,现在里面的(0,6000],(6000,10000],(10000,20000]这几个区间的上下界都需要通过SQL查询才能得到,而且提成比例0.10,0.13,0.20也需要通过SQL查询才能得到,UDF还能用吗?或者说有没有什么替代方案?

阅读 2.3k
1 个回答

很简单,直接为这个UDF加参数不就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进