Snowflake cloud data platform 在集群中,在执行Injesting之前对数据进行排序是否会提高截断表的性能?

Snowflake cloud data platform 在集群中,在执行Injesting之前对数据进行排序是否会提高截断表的性能?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我的目标是接收按特定列排序的数据,以便分区也按该顺序排列,从而使对该列的修剪变得高效 我想将排序的成本降到最低,并希望获得一些关于我应该多久重新排序的指导 例如: CREATE TABLE test_order(n NUMBER, s STRING); INSERT INTO test_order VALUES (12, 'a'), (11, 'b'), (10, 'c'), (9, 'd'), (8, 'e'), (7, 'f'), (

我的目标是接收按特定列排序的数据,以便分区也按该顺序排列,从而使对该列的修剪变得高效

我想将排序的成本降到最低,并希望获得一些关于我应该多久重新排序的指导

例如:

CREATE TABLE test_order(n NUMBER, s STRING);
INSERT INTO test_order 
VALUES 
   (12, 'a'), 
   (11, 'b'), 
   (10, 'c'), 
   (9, 'd'), 
   (8, 'e'), 
   (7, 'f'), 
   (6, 'g'), 
   (5, 'h'), 
   (6, 'i'), 
   (5, 'j'), 
   (4, 'k'), 
   (3, 'l'), 
   (2, 'm'), 
   (1, 'n');

SELECT * FROM test_order 
ORDER BY n ASC;

ALTER TABLE test_order CLUSTER BY (n, s);
ALTER TABLE test_order RECLUSTER;

SELECT n, s FROM test_order;
SELECT SYSTEM$CLUSTERING_INFORMATION('test_order', '(n,s)');
这是第一次插入的信息:

{
“按键聚类”:“线性(N,S)”,
“总分区计数”:1,
“总常量分区计数”:0,
“平均重叠”:0.0,
“平均深度”:1.0,
“分区深度直方图”:{
"00000" : 0,
"00001" : 1,
"00002" : 0,
"00003" : 0,
"00004" : 0,
"00005" : 0,
"00006" : 0,
"00007" : 0,
"00008" : 0,
"00009" : 0,
"00010" : 0,
"00011" : 0,
"00012" : 0,
"00013" : 0,
"00014" : 0,
"00015" : 0,
"00016" : 0
}

}
如果要接收已排序的数据,我认为不需要对表进行集群。您的数据将自然地聚集在一起,您将得到所需的修剪。

您为什么要求改进截断?我对标题有点困惑。不清楚你在问什么。截断是一种元数据操作,因此在加载时对表进行排序不会影响截断的性能。然而,它将有助于表的集群化。此外,在较新版本的Snowflake中,手动重新聚集表格也将被弃用。SimonD,谢谢你,我正在探索的是,如果我按特定顺序预加载数据,我认为这可能有助于更快地查找数据,我正在从需要窗口的模型移动,现在意识到雪花为你做了这一切。我真正应该问的是,我应该多久对我的数据进行一次聚类,因为每次我们接收新数据时,自动聚类都会进行聚类。截断将被安排在每个月进行,我有一个理论,如果我们用windows组织的集群需要截断,它将节省计算时间。仍在学习,谢谢你的帮助。我想只有当你只在桌子上插入一次,再也不要碰它时,才会出现这种情况。