雪花 - 无效的标识符
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 但无法获得结果,任何其他方式都不会遇到无效标识符以上是关于雪花 - 无效的标识符的主要内容,如果未能解决你的问题,请参考以下文章