雪花-每次合并到哪种类型的舞台表都会自动创建?

时间:2020-08-09 22:39:02

标签: sql database apache-spark pyspark snowflake-cloud-data-platform

我想将Spark DataFrame写入Snowflake表中。我为Spark使用Snowflake connector,并将带有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表阶段上的documentation未指定使用MERGE INTO时适合的类型。我需要由Snowflake自动创建的临时舞台表。

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

1 个答案:

答案 0 :(得分:1)

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

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

希望这项工作对您有用。