首页 > 解决方案 > 雪花 - 每次合并时会自动创建哪种类型的舞台表?

问题描述

我想将 Spark DataFrame 写入雪花表。我正在为 Spark 使用Snowflake 连接器,并将通过 MERGE 将“查询”选项传递给如下语句:

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()

我没有任何外部源表,并且想找到一种方法来每次都覆盖阶段数据,然后将其合并到目标表中。但我不太明白在这种情况下我应该使用哪种类型的舞台。Snowflake 表阶段的文档没有指定使用 MERGE INTO 时适合的类型。我需要像 Snowflake 自动创建的临时舞台表之类的东西。

对于上面的例子,会stage_table自动创建吗?如果我不想显式创建任何阶段表,它应该如何命名?

标签: sqldatabaseapache-sparkpysparksnowflake-cloud-data-platform

解决方案


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

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

希望这对你有用。


推荐阅读