SAS到Hive数据拷贝

wa7juj8i  于 2023-06-22  发布在  Hive
关注(0)|答案(1)|浏览(241)

我有下面的场景,希望能得到帮助解决同样的请。
我正在将SAS数据集转换为Hive表。我能够使用SAS表上的proc内容将大多数数据类型转换为hive中相应的数据类型。但是,对于SAS中的某些数值列,没有定义格式。它只是创建为Num,包含整数和小数。我的所有逻辑都基于proc内容中的format列。对于大多数列,它将具有Num格式'best32.',并且基于formtd,我们定义小数部分。但是在只有Num并且包含整数和小数的情况下,Hive表是用数字列创建的,小数在Hive表中被舍入。
有没有一种方法可以知道SAS数据集中的Num列是否包含整数或小数或两者兼而有之,并根据结果在Hive中创建相应的列并复制数据?

f4t66c6m

f4t66c6m1#

你可以做一个整数测试:

data test;
  input int dec;
cards;
1 10
2.0 11.1
3.0 12.2
4   13
;
run;

data result;
  set test end=eof nobs=nobs;
    array NN(i) int dec;
    array rr[2];

    do over NN;
     rr[i]+(NN=int(NN));
    end;

    if eof then do;
      do over NN;
       if rr[i] NE nobs then do;
          x = vname(NN);
          Put x " is decimal";
       end;
      end; 
      
    end;
run;

相关问题