scala - 使用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 作为参数传递,而不是像这样直接传递。
我怎样才能做到这一点?
解决方案
这在 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
推荐阅读
- python - TensorFlow 第五次检索失败
- mysql - MySQL进程卡住
- google-cloud-platform - 如何在 Google 数据存储区更改种类名称或删除种类
- c - 试图在 C 中的数独程序中将 for 循环更改为 while 循环
- angular - 从 IpcMain 通信时没有角度变化检测
- mysql - 查找第一次出现的连续开始/结束列
- android - 如何使回车键将光标移动到 Android Studio 中的行尾,就像在 Eclipse 中一样
- python - Pandas:根据数据框之间的比较组合不同形状的数据框
- c++ - 在头文件和实现文件中创建模板模板函数
- php - php 数据显示在表格中