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

Snowpark查询CUSTOMERS表报FIRST_NAME无效标识符错误如何解决?

解决Snowpark查询CUSTOMERS表时的"无效标识符'FIRST_NAME'"错误

1. 确认表的实际列名(区分大小写)

Snowflake默认会把未加双引号的标识符转为大写,但如果建表时列名是用双引号定义的小写/混合大小写,查询时必须用双引号包裹且严格匹配大小写。先执行以下SQL确认列名的实际存储形式:

DESCRIBE TABLE CUSTOMERS;

查看输出的name列,确认列名是FIRST_NAME还是first_name(注意大小写细节)。

2. 修正Snowpark代码的列引用方式

错误示例(如果列实际为小写):

df = session.table("CUSTOMERS").select("ID", "FIRST_NAME", "LAST_NAME")

正确写法(根据实际列名调整):

如果列实际是first_name(建表时用双引号定义),则:

df = session.table("CUSTOMERS").select('ID', '"first_name"', '"last_name"')

或者用Snowpark的col函数更清晰:

from snowflake.snowpark.functions import col
df = session.table("CUSTOMERS").select(col("ID"), col('"first_name"'), col('"last_name"'))

3. 检查表的完整引用路径

如果CUSTOMERS表不在当前会话的默认数据库和架构下,需要指定完整的表路径,避免因找不到正确表导致列名识别错误:

df = session.table("MY_DB.MY_SCHEMA.CUSTOMERS").select(...)

4. 验证会话的大小写敏感性设置

检查当前会话的QUOTED_IDENTIFIERS_IGNORE_CASE参数值:

SHOW PARAMETERS LIKE 'QUOTED_IDENTIFIERS_IGNORE_CASE';

如果该参数设为TRUE,双引号包裹的标识符会忽略大小写;如果是FALSE则严格区分。可以临时修改参数测试:

session.sql("ALTER SESSION SET QUOTED_IDENTIFIERS_IGNORE_CASE = TRUE").collect()

之后重新执行查询看是否解决问题。

5. 排查拼写错误

仔细核对DESCRIBE TABLE的输出,确认列名没有拼写错误(比如是否是FIRSTNAME而非FIRST_NAME),同时检查表名是否正确(比如是否是CUSTOMER单数而非CUSTOMERS)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:32:39