是否支持将临时视图作为源传递到 merge 语句中?
我正在创建临时视图
df.createOrReplaceTempView("dim_user")
然后我想将它用作合并语句中的源
query_1 = f"""
MERGE INTO gold.d_hsseq_user_v2 AS tgt
USING dim_user AS src
ON tgt.userid = src.userid
AND tgt.hashed_key_SCD1 <> src.sha2(concat_ws(',', {concatenated_scd1}))
WHEN MATCHED THEN
UPDATE SET {set_scd1},
tgt.HSH_SCD1 = src.sha2(concat_ws(',', {concatenated_scd1}));
"""
但是我收到错误
Database 'src' not found
。
它在一个 Spark 会话下运行,但我也尝试创建全局临时视图,但遇到了同样的错误。
当我运行
show views
时,我看到它已创建
出现上述错误是由于
sha2()
的错误使用造成的。 sha2()
不是表内置函数。在上面,您将其用作 <table_name>.sha2()
,这就是错误的原因。
您需要使用
sha2()
函数,如下例所示。
query1 = "select sha2(concat_ws(',',array('user_id','name','gender')),256)"
spark.sql(query1).show()