gpt4 book ai didi

Scala 字符串变量替换

转载 作者:行者123 更新时间:2023-12-01 09:16:39 26 4
gpt4 key购买 nike

我有用 Scala 编写的 Spark 代码。 Spark 读取存储要执行的 SQL 的元表(已经在 spark 中作为临时表)。

我面临的问题是我们有使用变量的查询(在 Scala 代码中定义)

我尝试了不同的方法,但我无法用值替换变量。

var begindate= s"2017-01-01";
var enddate = s"2017-01-05";

Msg.print_info(s"begin processing from ${beginDate} to ${endDate}");


//Reading SQL from MetaData table stored in spark as meta_table (temp table)

val dynamic_read_sql = s"""
select SQL_TEXT
from meta_table""";

val dynamic_sql_query = sqlContext.sql(dynamic_read_sql);
val check_query = dynamic_sql_query.first().getString(0);

Msg.print_info(s"check_query = $check_query");

我正在正确显示 sql。
// date is also temp table in spark
select * from date where load_date >= '${begindate}' and load_date <='${enddate}'

下一步就是执行这个sql
dynamic_sql_find = sqlContext.sql(check_query);

但它无法替换已在代码中定义的 '${begindate}' 和 '${enddate}'。因此,返回 0 条记录。

我试图将商店存储在另一个变量中。
val replace_check_query = s"${check_query}"

但是,它没有替换变量。

你能帮忙吗?

最佳答案

正如@radumanolescu 正确地说的那样, begindate 和 enddate 仅在编译时被替换。要在运行时替换这些,您可以手动替换子字符串:

val dynamic_sql_query = sqlContext.sql(check_query).replace("${begindate}", begindate).replace("${enddate}", enddate)

关于Scala 字符串变量替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42679463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com