Как вызвать удаленную функцию SQL внутри PySpark или Scala блокнота databriks - PullRequest
0 голосов
/ 18 июня 2020

Я пишу датабрики scala / python блокнот, который подключает SQL базу данных сервера. и я хочу выполнить 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 '

Я получил ошибку: jdb c .SQLServerException: параметры не были предоставлены для функции

Как я могу передать параметр и вызвать функцию SQL внутри записной книжки в scala или pyspark.

1 Ответ

1 голос
/ 19 июня 2020

Здесь вы можете сначала создать строку запроса, в которой хранится оператор вызова функции с параметрами c Dynami. а затем использовать в конфигурации.

    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()
...