如何使用spark将日期变量传递给teradata?

zzzyeukh  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(425)

四处寻找,但还没找到这个问题。。。我正在jupyter笔记本中编写python代码,我们使用的很多数据集都是teradata,因此我的代码通常如下所示:

cs = '''
( 
select 

* 

from SST01.data
where snap_dt = '2020-08-31'
)foo'''
dfclnt_status = spark.read.format('jdbc') \
    .option('url', 'jdbc:teradata://teradataservernamehere') \
    .option('driver', 'com.teradata.jdbc.TeraDriver') \
    .option('user', 'redacted') \
    .option('password', PASS) \
    .option('dbtable', cs) \
    .load()

我知道,在spark中,在针对配置单元表运行代码时,我可以使用{var}传递日期变量,但当我尝试在针对teradata的查询中应用相同的方法时,会出现以下错误:

Py4JJavaError: An error occurred while calling o233.load.
: java.sql.SQLException: [Teradata Database] [TeraJDBC 16.30.00.00] [Error 3535] [SQLState 22003] A character string failed conversion to a numeric value.

如何将日期变量传递到teradata中?
编辑:我的变量如下所示:

END_DT='2020-08-31'
mv1qrgav

mv1qrgav1#

最简单的方法可能是显式地将字段转换为日期,如下所示:

to_date('2020-08-31')

如果仍然出现错误,请查看ddl表。错误说明字段是数字。

相关问题