雪花 - 无效的标识符

Posted

技术标签:

【中文标题】雪花 - 无效的标识符【英文标题】:Snowflake - Invalid Identifier 【发布时间】:2021-11-01 19:28:23 【问题描述】:

您好,我在下面执行此查询时收到无效的“所有者”标识符,我尝试了单引号/双引号和 tilda

在显示角色中,我有带有电子邮件地址的 cmets,我正在尝试获取所有者和所有者的电子邮件地址。

cmets 示例 - RoleType:"Access",Workload:"RTR",Application:"Business Automation",AppName:"RTR",Contact:"sabfinw@gmail.com",Director:"sabrish133@gmail.com ",环境:"DEV",所有者:"sanjayd.980@gmail.com",VP:"sabrish"

show roles;

    select owner,split_part(b.data,':',2) as Owner_Email from (
        select a.value::string as data from TABLE(RESULT_SCAN(LAST_QUERY_ID())),
        lateral flatten(input=>split("comment",',')) a) b where b.data like '%Owner%';

【问题讨论】:

啊,你只是把它当作一个字符串,因此前面的 JSON 注释不适用。因此,问题在于外部选择中没有名为 owner 的对象可供选择,因为 data 是内部选择中唯一可访问的对象。 【参考方案1】:

您需要从内部选择中选择值

SELECT 
    owner,
    split_part(b.data,':',2) as Owner_Email 
FROM (
    SELECT r.owner,
        a.value::string as data
    FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) r,
    LATERAL FLATTEN(input=>split(r.comment, ',')) a
) b 
WHERE b.data LIKE '%Owner%';

或者您可以使用 QUALIFY 子句同时过滤:

SELECT r.owner,
    split_part(a.value::string, ':', 2) as Owner_Email
FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) r,
LATERAL FLATTEN(input=>split(r.comment, ',')) a
QUALIFY a.value::string LIKE '%Owner%'

【讨论】:

嗨 simeon,无效的标识符“r.owner”和“r.comment”,在单引号内尝试仍然相同 @Virally 我没有运行这个 SQL,所以只是从查看文档中猜测,但引用根本不重要。好吧,没有引号意味着字符串(默认)变为大写,其中双引号意味着在您键入时保留它,除非您更改为大写,否则它将不匹配,而单引号是字符串文字,也就是不是列名一点也不。但如果你只是做SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())),那会给你列的名称。只需检查SELECT owner, comment FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) 是否有效。然后进行拆分/过滤位 是的 simeon 但无法获得结果,任何其他方式都不会遇到无效标识符

以上是关于雪花 - 无效的标识符的主要内容,如果未能解决你的问题,请参考以下文章

雪花声明在程序中不起作用

将标识列添加到雪花中的现有表?

获取插入到雪花数据仓库中的行的标识

雪花存储过程中的事务

在 Mongoose Schema 中使用雪花作为类型

SQL 无效标识符 00904.00000 - “%s:无效标识符”