为什么压缩功能在SAS Enterprise Guide中不起作用?

为什么压缩功能在SAS Enterprise Guide中不起作用?,sas,left-join,proc-sql,enterprise-guide,sas-studio,Sas,Left Join,Proc Sql,Enterprise Guide,Sas Studio,我目前正在将我的软件包从SAS Base重组为SAS Enterprise Guide(SAS企业指南),以向客户传授知识。不幸的是,我不得不牺牲的一个方面是在procsql左连接中从使用compress改为strip,例如下面的代码不起作用 data have; input ID VarA; datalines; 1 2 2 3 3 4 4 5 ; run; data have1; input ID Var1 Var2 Va

我目前正在将我的软件包从SAS Base重组为SAS Enterprise Guide(SAS企业指南),以向客户传授知识。不幸的是,我不得不牺牲的一个方面是在procsql左连接中从使用compress改为strip,例如下面的代码不起作用

   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;
我有时可以使用strip函数,但传递带有compress的包更安全,因为观察中经常会出现空间错位。有什么想法吗


编辑:为了避免进一步的混淆,我通常使用压缩函数来查找EURIBOR 006m等债券的参考利率-这使得我的一般示例不正确,但左连接通常使用字符变量

使用压缩函数需要字符变量。您的ID变量是数字。

尝试转换为字符:

on compress(put(a.ID,8.)) = compress(put(b.ID,8.));

日志窗口中显示了哪些消息或错误?你看过日志了吗?您是否看到
错误:函数压缩需要一个字符表达式作为参数1。
如果观察值经常有空格错位,则可能存在更大的或系统性的问题。日志窗口中没有显示错误,正如我所说,这在SAS Base中有效,但奇怪的是在SAS Enterprise guide中不起作用,很抱歉,我把这个通用示例弄错了。通常我用它来匹配债券的利率,例如EURIBOR 006MIt,可能是Base(DMS会话)使用与EG连接的会话不同的编码或操作系统运行,这反过来可能会有细微的差异。我的道歉,这只是一个普通的例子,但通常我这样做是为了债券的参考利率,例如EURIBOR 006MI尝试在EG上使用压缩函数,它起了作用,所以也许你需要提供一个具体的例子,在它不起作用的地方,我们可以帮助找出原因。是的,它现在似乎起作用了,我将尝试找到它发生故障的具体情况