雪花无法识别在 Alteryx 中创建的表中的列

时间:2021-02-12 18:37:39

标签: sql snowflake-cloud-data-platform alteryx

我有一个 Alteryx 工作流程,它从雪花表中选择所有内容,向表中添加一个 RecordId 列,然后将结果上传回雪花并使用新名称。

问题是:Snowflake 无法识别 RecordID 列。

如果我使用 SELECT * FROM NUMBERED_TABLE,它会成功读取整个表,显示每个字段,包括 RecordID。

但是如果我尝试使用 SELECT RECORDID FROM NUMBERED_TABLE 进行选择,我会收到消息 SQL compilation error: error line 1 at position 7 invalid identifier 'RECORDID'

从用户界面来看,Snowflake 说该列确实被称为 RECORDID。

尝试重命名列也不起作用。它只是说 RECORDID 列不存在。

我已经尝试通过基于自身创建一个新表来重新创建该表,但它仍然无法识别它。

1 个答案:

答案 0 :(得分:1)

查询是 SELECT RECORDID FROM NUMBERED_TABLE,但您注意到有几次名称是 RecordID

Snowflake 对对象名称区分大小写,因此 RECORDIDRecordID 可以是同一个表中的两个不同列。 Snowflake 隐式大写对象名称,因此如果您运行查询 SELECT RecordID FROM NUMBERED_TABLE,Snowflake 会将其隐式转换为 SELECT RECORDID FROM NUMBERED_TABLE。如果列实际上是 RecordID,它会报告它找不到 RECORDID。如果您有大小写混合的列名,则防止隐式大写的方法是将对象名用双引号括起来:

select "RecordID" from NUMBERED_TABLE;

大多数 ETL 合作伙伴会将对象名称括在 Snowflake 的引号中。我已经看到 Alteryx 为 Snowflake 做这件事,所以如果它在源数据库中 RecordID,这可能就是这里发生的事情。