临时视图并合并到语句中

问题描述 投票:0回答:1

是否支持将临时视图作为源传递到 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
时,我看到它已创建

pyspark apache-spark-sql azure-databricks
1个回答
0
投票

enter image description here

出现上述错误是由于

sha2()
的错误使用造成的。
sha2()
不是表内置函数。在上面,您将其用作
<table_name>.sha2()
,这就是错误的原因。

您需要使用

sha2()
函数,如下例所示。

query1 = "select sha2(concat_ws(',',array('user_id','name','gender')),256)"
spark.sql(query1).show()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.