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

求助:在Snowpark中操作Snowflake外部文件列表遇NAME标识符无效错误

解决Snowpark中LIST命令列名无效的问题

问题原因

Snowflake的LIST命令返回的列名是小写的name,而Snowflake默认会将未加引号的标识符自动转为大写,直接使用col('name')会被解析为NAME,导致出现"无效标识符"的错误。

解决方案

有两种可行的解决方式:

方式一:使用带双引号的列名引用

在col()中用双引号包裹小写列名,强制Snowflake匹配原列名:

import snowflake.snowpark as snowpark
from snowflake.snowpark.functions import col

def main(session: snowpark.Session): 
    dataframe = session.sql('list @test/ext')
    df_selected = dataframe.select(col('"name"'))
 
    return df_selected

方式二:通过RESULT_SCAN获取结果并设置别名

将LIST命令的结果通过result_scan转为可查询的表,同时给列设置大写别名,后续直接使用别名即可:

import snowflake.snowpark as snowpark
from snowflake.snowpark.functions import col

def main(session: snowpark.Session): 
    # 执行LIST命令
    session.sql('list @test/ext').collect()
    # 通过result_scan获取结果并设置别名
    dataframe = session.sql('select "name" as FILE_NAME from table(result_scan(last_query_id()))')
    df_selected = dataframe.select(col('FILE_NAME'))
 
    return df_selected

内容的提问来源于stack exchange,提问作者Prodip

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:47:08