雪花工作表中的完全限定名称



在Snowflake工作表中始终使用完全限定名是否被认为是良好的实践?

问因为我有时候看到这样的事情:

CREATE OR REPLACE STAGE db.schema.mystage
url = 'xxxxx'
DESC STAGE db.schema.mystage
ALTER STAGE mystage 
SET ...

没有使用ALTER STAGE的完全限定名,因为他们说工作表的内容菜单已经设置为正确的数据库和模式。

对我来说,这似乎不一致,并且可能容易出错。

那么在Snowflake工作表中始终使用完全限定名是好的做法吗?

是的,使用完全限定名是很好的做法。特别有用,因为你打开多个工作表,避免改变dB或模式。

正如@patrick_at_snowflake所提到的,这实际上归结为如何使用脚本以及如何区分环境。在使用数据库来区分dev、wat、prod等的情况下,不要在所有对象引用中指定数据库是有用的。在这种情况下,您可能只想限定模式,这样在不同的环境中运行脚本就像USE DATABASE prod_dbUSE DATABASE dev_db一样简单,而不必更新每个限定对象名称。

当我在工作表中编辑/实验/测试时,我使用完全限定的名称,所以我可以与团队成员共享SQL,并让它"只是工作";对他们来说,无论工作表指向什么

当我们在prod中运行代码时,我们用令牌替换了数据库/模式名称,这些令牌将根据部署目标进行替换。这样做的好处是,当您查看执行历史时,您可以获得完全限定的名称,因此可以重新运行查询而无需进行大量操作。

但我也不会使用全名如果我写错误报告/繁殖,不需要db/模式,和一个工作示例应该所有的相关数据,国际海事组织。

我认为在脚本中具有完全限定的对象名称总是很好的做法,不仅在工作表中,而且在一般情况下,包括您的udf和sp。

如果忘记在模式或数据库之间切换,数据被更新到错误的目标,或者从错误的源读取,这可以帮助避免潜在的错误。

它可以帮助你节省大量的调试时间。

最新更新