You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowpark Python从DataFrame创建临时视图时随机抛出SnowparkCreateViewException求助

Snowpark Python从DataFrame创建临时视图时随机抛出SnowparkCreateViewException求助

大家好,最近我在Snowpark Python里碰到了个特别棘手的随机报错问题,从DataFrame创建临时视图时会毫无规律地抛出异常,网上搜了一圈没找到能彻底解决的方案,来这儿求助各位大佬!

问题详情

  • 我有一个包含日期、目录名、文件名的Python嵌套列表,用它生成DataFrame后,再基于这个DataFrame创建或替换临时视图
  • 代码是在Snowflake内部的Python工作表中运行的
  • 报错完全随机,错误提示如下:
snowflake.snowpark.exceptions.SnowparkCreateViewException: (1203): Your dataframe may include DDL or DML operations. Creating a view from this DataFrame is currently not supported.
  • 我猜测这可能和记录数量有关?因为当记录数少于200条时基本都能正常执行,但超过200条就大概率失败,不过这也只是我的推测,不确定是不是巧合

已尝试的解决方法

  • 移除了代码中新增额外列的逻辑
  • 试过用df.select("*")复制一份新的DataFrame,再用这个副本创建视图
  • 试过在创建视图前先缓存DataFrame

实际运行代码

# 假设列表是在其他流程中生成的
    cur_run_files_list.append((date, dir_name, file_name))
    tst_vw_nm_fq = "DB_NAME.SCHEMA_NAME.TEST_VIEW"
    # --------------------------------------------------------------------------------
    df_cur_run_files_list = session.create_dataframe(
        cur_run_files_list,
        schema=["EXP_DATE", "DIR_NAME", "FILE_NAME"],
    )
    df_cur_run_files_list.create_or_replace_temp_view(tst_vw_nm_fq)

测试代码(间歇性失败,值为测试硬编码)

# 假设列表是在其他流程中生成的
# cur_run_files_list.append((date, dir_name, file_name))
cur_run_files_list = [
    ("2024-12-01", "dir_name01", "file_name01.txt"),
    ("2024-12-01", "dir_name02", "file_name02.txt"),
    ("2024-12-01", "dir_name03", "file_name03.txt"),
    ("2024-12-01", "dir_name04", "file_name04.txt"),
    ("2024-12-01", "dir_name05", "file_name05.txt"),
    ("2024-12-01", "dir_name06", "file_name06.txt"),
    ("2024-12-01", "dir_name07", "file_name07.txt"),
    ("2024-12-01", "dir_name08", "file_name08.txt"),
    ("2024-12-01", "dir_name09", "file_name09.txt"),
    ("2024-12-01", "dir_name10", "file_name10.txt"),
]
tst_vw_nm_fq = "DB_NAME.SCHEMA_NAME.TEST_VIEW"
# --------------------------------------------------------------------------------
df_cur_run_files_list = session.create_dataframe(
    cur_run_files_list,
    schema=["EXP_DATE", "DIR_NAME", "FILE_NAME"],
)
df_cur_run_files_list.create_or_replace_temp_view(tst_vw_nm_fq)
return df_cur_run_files_list # 因为Snowpark需要返回值所以添加了这行

备注:内容来源于stack exchange,提问作者rainingdistros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 18:08:11