如何在 PySpark 或 Scala 数据块笔记本中调用远程 SQL 函数

How to call remote SQL function inside PySpark or Scala databriks notebook

我正在编写连接 SQL 服务器数据库的 databriks scala / python notebook。 我想使用自定义参数从笔记本执行 sql 服务器功能。

import com.microsoft.azure.sqldb.spark.config.Config
import com.microsoft.azure.sqldb.spark.connect._

val ID = "1"
val name = "A"

val config = Config(Map(
  "url"            -> "sample-p-vm.all.test.azure.com",
  "databaseName"   -> "DBsample",
  "dbTable"        -> "dbo.FN_cal_udf",
  "user"           -> "useer567",
  "password"       -> "pppp@345%",
  "connectTimeout" -> "5", //seconds
  "queryTimeout"   -> "5"  //seconds
))

val collection = sqlContext.read.sqlDB(config)
collection.show()

这里的函数是FN_cal_udf,存储在sql服务器数据库中-'DBsample'

我收到错误: jdbc.SQLServerException: 没有为函数提供参数

我如何在 scala 或 pyspark 的笔记本中传递参数并调用 SQL 函数。

这里可以先做查询字符串,查询字符串存储动态参数的函数调用语句。 然后在congig中使用。

    import com.microsoft.azure.sqldb.spark.config.Config
    import com.microsoft.azure.sqldb.spark.connect._

    val ID = "1"
    val name = "A"
    val query = " [dbo].[FN_cal_udf]('"+ID+"','"+name+"')"
    val config = Config(Map(
      "url"            -> "sample-p-vm.all.test.azure.com",
      "databaseName"   -> "DBsample",
      "dbTable"        -> "dbo.FN_cal_udf",
      "user"           -> "useer567",
      "password"       -> "pppp@345%",
      "connectTimeout" -> "5", //seconds
      "queryTimeout"   -> "5"  //seconds
    ))

    val collection = sqlContext.read.sqlDB(config)
    collection.show()