如何生成数据来测试 Snowflake 处理数千列表的能力?

2023-11-30

Snowflake 可以处理数千列吗?

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


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

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

enter image description here

对于更复杂的数据生成需求,请检查https://github.com/RobertFehrmann/fehrminator.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何生成数据来测试 Snowflake 处理数千列表的能力? 的相关文章

随机推荐