Почему функция сжатия не работает в SAS Enterprise Guide? - PullRequest
0 голосов
/ 30 мая 2018

В настоящее время я перестраиваю свой пакет с SAS Base на SAS Enterprise Guide, передавая знания клиенту.К сожалению, одним из аспектов, которым я должен пожертвовать, является переход от использования компрессии к полосе в моих процедурах sql left joins, например, следующий код не работает

   data have;
   input ID VarA;
   datalines;

   1 2
   2 3
   3 4
   4 5
   ;
   run;

   data have1;
   input ID Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9;
   datalines;
   1 3 4 6 7 3 6 6 7 8
   2 2 2 2 2 5 6 7 2 1
   3 5 6 7 8 4 5 3 4 3
   4 3 4 6 7 4 6 8 3 6
   ;
   run;


   proc sql;
    create table Want as
    select a.*
      ,b.Var1
      ,b.Var2
      ,b.Var3
      ,b.Var4
      ,b.Var5
      ,b.Var6
      ,b.Var7
      ,b.Var8
      ,b.Var9
    from Have as a
    left join Have1 as b
    on compress(a.ID) = compress(b.ID);
   quit;

Я могу иногда использовать функцию полосы, нобезопаснее доставлять посылки со сжатием, поскольку в наблюдениях часто возникают неуместные пробелы.какие-либо идеи?

Редактировать: чтобы избежать путаницы, я обычно использую функцию сжатия, чтобы искать справочные ставки облигаций, таких как EURIBOR 006m - это делает мой общий пример неверным, но в левом соединении обычно используются символьные переменные

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Попробуйте преобразовать в символ:

on compress(put(a.ID,8.)) = compress(put(b.ID,8.));
0 голосов
/ 30 мая 2018

Вам нужна символьная переменная, чтобы использовать функцию сжатия.Ваши переменные ID являются числовыми.

...