本文介绍了如何生成数据来测试Snowflake处理数千列表格的能力?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

雪花可以处理数千列吗?

有没有办法生成测试数据来测试Snowflake在处理(比方说)2000列时的性能?

推荐答案

使用此脚本可以创建包含2,000列(或任意数量)的表,并为每个列指定一个默认随机值:

CREATE or replace PROCEDURE create_wide_table()
  RETURNS VARCHAR
  LANGUAGE javascript
  AS
  $$
ss = 'create or replace table wide2000 (id int';
for (const x of Array(2000).keys()) {
  ss += ', a' +x + ' int default uniform(1, 10000, random())';
}
ss += ');'
//return ss;
  var rs = snowflake.execute( { sqlText:  ss       } );
  return 'Done.';
  $$;

这将生成并执行如下所示的SQL查询:

create or replace table wide2000
  (id int
   , a0 int default uniform(1, 10000, random())
   , a1 int default uniform(1, 10000, random())
   , ...
);

您可以修改脚本以生成与您的数据类型和稀疏性更相似的数据。

这个表很酷的地方在于它对大多数列都有默认的随机数。因此,向其中添加一百万行变得非常容易。

先创建表:

call create_wide_table();

生成一百万行:

insert into wide2000 (id)
select seq8()
from table(generator(rowcount => 1000000))

运行您的实验:

select *
from wide2000
limit 10

有关更复杂的数据生成需求,请查看https://github.com/RobertFehrmann/fehrminator

这篇关于如何生成数据来测试Snowflake处理数千列表格的能力?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-26 09:04