在雪花中设置表自动聚类不会对表进行聚类

Posted

技术标签:

【中文标题】在雪花中设置表自动聚类不会对表进行聚类【英文标题】:Setting Table Auto Clustering On in snowflake is not clustering the table 【发布时间】:2019-08-20 20:14:43 【问题描述】:

大约 2 周前,我从手动聚类转移到自动聚类。

我使用的步骤如下。

    将表的 AUTO_CLUSTERING_ON 更新为 yes。 创建一个中间表并在表中插入记录。 然后通过中间表中的聚类键按顺序插入到主表中。

然后我看到集群无处不在。 我曾经也做过手动集群,并且看到集群做得很好。 但是在下一次插入主表时。再次聚类看起来有些麻烦。

如果我遗漏了什么,请提出建议。

请注意:

中间表中加载的数据也是从其他表中插入的。并且该表从不聚集。我不确定这是否是问题。(我觉得不应该)

【问题讨论】:

想知道聚类键列的数据类型是什么,您是如何得出结论认为聚类无处不在的? 【参考方案1】:

您可能需要使用 Snowflake 提出案例以启用自动集群。不久前创建的帐户不会启用此功能。来自documentation:

如果您的账户中仍然可以使用手动重新集群,则您的账户可能尚未启用自动集群。

您可以请求为您的帐户启用自动集群;但是,它只会影响从启用该功能后定义的聚簇表。

对于在启用该功能之前定义的集群表,您必须为每个表显式“恢复”自动集群。您可以使用 SQL 来确定是否为给定的表启用了自动集群。

同样从文档here 中,您应该尝试运行resume recluster 命令,因为该表可能是在为您的帐户启用自动集群之前创建的:

alter table t1 resume recluster;

不要忘记,表会根据 Snowflake 的判断自动重新聚集。 Snowflake 可能根本不认为该表需要基于多种因素重新聚类(我不知道:))

我认为用 Snowflake 提出一个案例可能会很快解决这个问题,所以这可能是最好的方法。

【讨论】:

【参考方案2】:

与问题没有特别相关,但我发现定期重建表将获得最佳的聚类结果,尤其是对于频繁流失的表。为此,您可以指定一个 ORDER BY 子句来模仿您的集群键。

创建或替换表 t1 复制授权 SELECT * FROM t1 ORDER BY a, b, c;

【讨论】:

以上是关于在雪花中设置表自动聚类不会对表进行聚类的主要内容,如果未能解决你的问题,请参考以下文章

雪花中的查询结果大小

通过自定义分区器对雪花中的大表进行分区

是否可以选择在雪花表上强制分区

如何验证雪花时间旅行设置?

由于数据中的“雪花问题”导致部分加载

在雪花的临时表中计算大小写