sas teradata 快速加载问题
sas teradata fastload issue
有没有快速加载数据到teradata的方法?我需要将 350,000 个帐号加载到 teradata,现在已经 运行 大约 4.5 小时了。
我只是在使用一个数据步骤。下面是我的代码。谢谢
libname myid teradata authdomain=IDWPRD server=IDWPRD database=myid mode=teradata connection=global;
proc delete data=myid.tera1;
run;
proc sql;
create table out.REQ_1_1_05l as
select distinct ACCOUNT_NB as ACCT_NB
FROM OUT.REQ_1_1_05;
quit;
data myid.tera1;
set OUT.REQ_1_1_05l ;
run;
将 dbcommit=
选项添加到您的 libname 语句中。默认值为 1 条记录,即它在每条记录上提交。尝试使用此值来为您的配置找到最佳设置。
libname myid teradata authdomain=IDWPRD server=IDWPRD database=myid mode=teradata connection=global dbcommit=5000 ;
https://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a001371531.htm
这通常是不良做法的结果。如果 350,000 条记录甚至在没有批量加载实用程序的情况下花费了几分钟,那么这对我来说也是令人惊讶的(除非它非常宽 table)。
在 Teradata 中,table 行分布在访问模块处理器 (AMP) 上。行分布取决于定义的主索引列的唯一性。主索引列越独特,数据分布越好,反之亦然。 AMP 中 table 行的不当分布会导致数据倾斜。
以下查询将创建 Teradata table,第一列作为主索引。如果第一列几乎没有不同的值,则会创建一个偏斜的 table。如前所述,倾斜 table 的影响会导致 space 的浪费,并且可能需要异常长的时间才能完成您的查询。
data myid.tera1;
set OUT.REQ_1_1_05l ;
run;
数据集选项dbcreate_table_opts可以显式定义主索引。 dbcreate_table_opts = 数据集选项需要关键字主索引,后跟括号中的列名。
data myid.tera1
(dbcreate_table_opts= 'primary index(yourcolumn)');
set OUT.REQ_1_1_05l;
run;
请select适当的唯一主索引,这通常是 Teradata 中最重要的事情。
请查看下面的文章,其中解释了 SAS 程序员在使用 Teradata 时可能遇到的常见问题。
https://www.lexjansen.com/mwsug/2016/SA/MWSUG-2016-SA11.pdf
您还可以使用快速加载实用程序,如下所示。 Fast load 执行批量加载,使将数据从 sas 移动到 Teradata 的速度非常快。
data myid.tera1
(fastload =yes dbcreate_table_opts= 'primary index(yourcolumn)');
set OUT.REQ_1_1_05l;
run;
如果您想了解有关 SAS 和 Teradata 数据移动的所有信息,请查看 Jeff bailey 的论文。
https://support.sas.com/.../EffectivelyMovingSASDataintoTeradata.pdf
最后检查您的 table myid.tera1 是否已设置 table,这将不允许重复,但这可能不是主要因素。如果你的 Teradata sql assistant 你做 show table ,它会告诉你它是 set 还是 multiset table。设置 table 不允许行级重复并在插入和加载时间之前检查每一行。
在您的 libname 语句中使用 bulkload=yes
选项:
libname myid teradata authdomain=IDWPRD server=IDWPRD database=myid mode=teradata connection=global bulkload=yes;
data tera.want;
set have;
run;
可在此处找到特定于 Teradata 的其他性能信息:
http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a001405937.htm
有没有快速加载数据到teradata的方法?我需要将 350,000 个帐号加载到 teradata,现在已经 运行 大约 4.5 小时了。
我只是在使用一个数据步骤。下面是我的代码。谢谢
libname myid teradata authdomain=IDWPRD server=IDWPRD database=myid mode=teradata connection=global;
proc delete data=myid.tera1;
run;
proc sql;
create table out.REQ_1_1_05l as
select distinct ACCOUNT_NB as ACCT_NB
FROM OUT.REQ_1_1_05;
quit;
data myid.tera1;
set OUT.REQ_1_1_05l ;
run;
将 dbcommit=
选项添加到您的 libname 语句中。默认值为 1 条记录,即它在每条记录上提交。尝试使用此值来为您的配置找到最佳设置。
libname myid teradata authdomain=IDWPRD server=IDWPRD database=myid mode=teradata connection=global dbcommit=5000 ;
https://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a001371531.htm
这通常是不良做法的结果。如果 350,000 条记录甚至在没有批量加载实用程序的情况下花费了几分钟,那么这对我来说也是令人惊讶的(除非它非常宽 table)。
在 Teradata 中,table 行分布在访问模块处理器 (AMP) 上。行分布取决于定义的主索引列的唯一性。主索引列越独特,数据分布越好,反之亦然。 AMP 中 table 行的不当分布会导致数据倾斜。
以下查询将创建 Teradata table,第一列作为主索引。如果第一列几乎没有不同的值,则会创建一个偏斜的 table。如前所述,倾斜 table 的影响会导致 space 的浪费,并且可能需要异常长的时间才能完成您的查询。
data myid.tera1;
set OUT.REQ_1_1_05l ;
run;
数据集选项dbcreate_table_opts可以显式定义主索引。 dbcreate_table_opts = 数据集选项需要关键字主索引,后跟括号中的列名。
data myid.tera1
(dbcreate_table_opts= 'primary index(yourcolumn)');
set OUT.REQ_1_1_05l;
run;
请select适当的唯一主索引,这通常是 Teradata 中最重要的事情。
请查看下面的文章,其中解释了 SAS 程序员在使用 Teradata 时可能遇到的常见问题。
https://www.lexjansen.com/mwsug/2016/SA/MWSUG-2016-SA11.pdf
您还可以使用快速加载实用程序,如下所示。 Fast load 执行批量加载,使将数据从 sas 移动到 Teradata 的速度非常快。
data myid.tera1
(fastload =yes dbcreate_table_opts= 'primary index(yourcolumn)');
set OUT.REQ_1_1_05l;
run;
如果您想了解有关 SAS 和 Teradata 数据移动的所有信息,请查看 Jeff bailey 的论文。
https://support.sas.com/.../EffectivelyMovingSASDataintoTeradata.pdf
最后检查您的 table myid.tera1 是否已设置 table,这将不允许重复,但这可能不是主要因素。如果你的 Teradata sql assistant 你做 show table ,它会告诉你它是 set 还是 multiset table。设置 table 不允许行级重复并在插入和加载时间之前检查每一行。
在您的 libname 语句中使用 bulkload=yes
选项:
libname myid teradata authdomain=IDWPRD server=IDWPRD database=myid mode=teradata connection=global bulkload=yes;
data tera.want;
set have;
run;
可在此处找到特定于 Teradata 的其他性能信息: http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a001405937.htm