首页 > 解决方案 > 使用scala spark将参数传递给sql字符串三元组

问题描述

val BusinessDate = '2019-02-06'
val query = """(SELECT *
                  |FROM
                  |  v_Account AS a left join v_Customer AS c
                  | ON c.CustomerID = a.CustomerID AND c.Businessdate = a.Businessdate
                  |WHERE
                  | a.Category = 'Deposit' AND
                  | c.Businessdate= '2019-02-06' AND a.Balance IS NOT NULL AND
                  | isnull(a.Classification,'N/A') IN ('Contractual Account','Non-Term Deposit','Term Deposit')) tmp """.stripMargin

val responseWithSelectedColumns = spark
      .read
      .format("jdbc")
      .option("url", url)
      .option("driver", driver)
      .option("dbtable", query)
      .load()

    print("TOTAL: "+responseWithSelectedColumns.count())

在这行 sql string c.Businessdate= '2019-02-06',我想将 BusinessDate 作为参数传递,而不是像这样直接传递。

我怎样才能做到这一点?

标签: scalaapache-spark

解决方案


这在 Scala中称为字符串插值:

val BusinessDate = '2019-02-06'
val query = s"""(SELECT *
                  |FROM
                  |  v_Account AS a left join v_Customer AS c
                  | ON c.CustomerID = a.CustomerID AND c.Businessdate = a.Businessdate
                  |WHERE
                  | a.Category = 'Deposit' AND
                  | c.Businessdate= '$BusinessDate' AND a.Balance IS NOT NULL AND
                  | isnull(a.Classification,'N/A') IN ('Contractual Account','Non-Term Deposit','Term Deposit')) tmp """.stripMargin

推荐阅读