【问题标题】:sas teradata fastload issuesas teradata 快速加载问题
【发布时间】:2019-01-20 14:03:16
【问题描述】:

有没有一种将数据加载到 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;

【问题讨论】:

    标签: sas teradata


    【解决方案1】:

    在您的 libname 语句中添加 dbcommit= 选项。默认值为 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

    【讨论】:

      【解决方案2】:

      这通常是不良做法的结果。如果 350,000 条记录需要几分钟以上甚至没有批量加载实用程序,那么这对我来说也是令人惊讶的(除非它是非常宽的表)。

      在 Teradata 中,表行分布在访问模块处理器 (AMP) 上。行分布取决于定义的主索引列的唯一性。主索引列越独特,数据分布越好,反之亦然。 AMP 中的表行分布不当会导致数据倾斜。

      以下查询将创建以第一列作为主索引的 Teradata 表。如果第一列的不同值很少,则会创建一个倾斜的表。如前所述,倾斜表的影响会导致空间浪费,并且可能需要非常长的时间才能完成查询。

        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;
      

      请选择适当的唯一主索引,这在 Teradata 中通常是最重要的。

      请查看以下文件,该文件解释了 SAS 程序员在使用 Teradata 时可能遇到的常见问题。

      https://www.lexjansen.com/mwsug/2016/SA/MWSUG-2016-SA11.pdf

      您还可以使用如下所示的快速加载实用程序。快速加载可以进行批量加载,并且可以非常快速地将数据从 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

      最后检查你的表 myid.tera1 是否设置了表,它不允许重复,但这可能不是主要因素。如果您使用 Teradata sql 助手 show table ,它会告诉您它是 set 还是 multiset 表。设置表不允许行级重复,并在插入前检查每一行以及加载时间。

      【讨论】:

        【解决方案3】:

        在您的 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

        【讨论】:

          猜你喜欢
          • 2017-07-01
          • 2015-09-08
          • 1970-01-01
          • 1970-01-01
          • 2016-10-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多