0

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

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 server 数据库 -'DBsample'

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

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

4

1 回答 1

1

在这里,您可以首先制作存储带有动态参数的函数调用语句的查询字符串。然后在 conig 中使用。

    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()
于 2020-06-19T07:42:17.923 回答