snowflake-stage表的类型是在每次合并时自动创建的?

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

我想把一个sparkDataframe写到一个雪花表中。我正在为spark使用雪花连接器,并将传递一个带有merge-into语句的“query”选项,如下所示:

merge_query =  "merge into target_table using stage_table 
        on target_table.id = stage_table.id
        when matched then 
        update set target_table.description = stage_table.description"

df.write
    .format(SNOWFLAKE_SOURCE_NAME)
    .options(sfOptions)
    .option("query", "merge_query")
    .mode(SaveMode.Overwrite)
    .save()

我没有任何外部源表,希望找到一种方法,每次覆盖阶段数据,然后将其合并到目标表。但我不太明白在这种情况下我应该使用哪种类型的舞台。有关雪花表阶段的文档没有指定在使用“合并到”时适合的类型。我需要像一个由雪花自动创建的临时舞台表的东西。
对于上面的例子 stage_table 是否自动创建?如果我不想显式地创建任何stage表,应该如何命名?

lc8prwob

lc8prwob1#

现在有了自动创建任何表的方法。您可以在程序中创建一个临时表,然后将数据加载到该表中并进行合并。临时表仅对会话可用,并且在会话结束时(即作业结束时)将自动删除。会话表对任何其他会话都不可见。您可以创建临时表,如下所示

CREATE TEMPORARY TABLE <STG_TABLE_NAME>(FILED 1 VARCHAR, ...)

希望这对你有用。

相关问题