sql - 雪花 - 每次合并时会自动创建哪种类型的舞台表?
问题描述
我想将 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
自动创建吗?如果我不想显式创建任何阶段表,它应该如何命名?
解决方案
现在有自动创建任何表的方法。您可以在程序中创建一个临时表,然后将数据加载到该表中并进行合并。临时表仅对会话可用,并且会在会话结束时自动删除(这意味着一旦您的工作结束)。会话表对任何其他会话不可见。您可以如下创建临时表
CREATE TEMPORARY TABLE <STG_TABLE_NAME>(FILED 1 VARCHAR, ...)
希望这对你有用。
推荐阅读
- generics - 具有借入借入的构造函数的特征不能推断使用的提升时间
- python - 具有不同路径的图库,具体取决于型号名称
- python - ModuleNotFoundError:没有名为“pygame”的模块| VS 代码中的错误
- qt - 在从 QML 主窗口按下的按钮上打开一个 qt 小部件窗口
- javascript - 如何通过vue实例调用单独的js文件中的函数
- angular - 角度错误:无法设置未定义的属性
- android - 可以使用销毁的活动作为上下文调用 PreferenceManager.getDefaultSharedPreferences() 吗?
- algorithm - 按值为 MS 的列对数组进行排序。Excel 的行标签
- libcurl - curl_multi_fdset() 结合 poll()
- python - 宽度、高度和边距在 PySide6 的 QT 样式表中不起作用