2016-03-08 71 views

回答

0

SAS VA数据生成器使用SQL查询。 因此没有像合并这样的数据步骤。使用Full-Join,或者如果您有一个前导表,这个表上的Left-Join,将会得到与by语句合并相同的结果。

使用所有相关的ID连接GUI中的两个表,或者只是在代码窗格中自己编辑代码。

编辑: 如果您想在VA数据生成器中附加数据:这不是在查询中完成的。您可以直接右键单击内存库中的基本表并选择附加选项。

+0

但是,如果我进行全连接,它表示它必须至少有1列从我加入的每个表。所以a.id和b.id.但我只想要一个'联盟全部'的id。也许这就是SAS所谓的追加系统 –

+1

你是对的,那就是所谓的追加。你不需要为此进行查询。只需右键单击库中的基表并选择append。确保你使用内存表。 – Jetzler

+0

感谢您的帮助,现在它的其他进口isse即时.. .. localizedMessage =“com.sas.lasr.LASRException:错误:未能派生格式化的值。(errorCode = GENERIC_EXCEPTION,params = null)”..得到不知道xD是什么意思 –

0

是的,数据准备在sql上运行,但它不必。从理论上讲,你可以在数据准备中破解代码来完成你想要的。首先,在数据准备工作中创建一个“虚拟”查询,方法是将任何数据集拉入设计选项卡(使用同一个库中的一个与其他库中的一个相同,以便简化,甚至可以使用已经选择的两个之一),选择一列或两列产生结果,转到“输出”选项卡,并给它最终所需的实际名称。然后点击“代码”选项卡。你会看到一些预先填充的代码。在底部,您会看到一个proc sql语句查询数据集,然后拉入所选的列,然后输入代码以删除任何现有数据集,然后使用数据步骤在lasr库中创建表。会是这个样子,我打电话给我的输出testtable_01 ...

proc sql noprint; 
create table TEMP_LASR_VIEW_0 as 
SELECT 
    library.column_1 length=8 format=16. AS column_1, 
    library.column_2 length=8 format=10. AS column_2 
FROM 
    library.table; 
quit; 
/* Drop existing table */ 
%vdb_dt(LASRLIB.testtable_01); 
data LASRLIB.testtable_01 ( ); 
set TEMP_LASR_VIEW_0 (); 
run; 

现在预览查询结果(只是为了确保它的工作,这是它应该因为它是一个简单的SELECT语句)。接下来,您将保存查询。这将生成您需要的最后一段代码...可注册的宏。这将创建分配给您在开始时使用的输出表名称的reposid和tableid。应该是这个样子..

/* Synchronize table registration */ 
%registerTable(
LIBRARY=%nrstr(/Shared Data/SAS Visual Analytics/Public/Visual Analytics Public LASR) 
, REPOSID=%str(A5UHNO19) 
, TABLEID=%str(A5UHN019.BF003CB7)); 

既然你有这样的一段代码,你可以点击“解锁手动编辑”按钮(看起来像在代码窗口的左上角有一个小挂锁)。一旦你点击它就没有回头路了。如果你搞砸了,你必须从头开始。但是现在您可以修改代码。将proc sql替换为想要合并实际要使用的两个数据集的任何代码。例如。

DATA TEMP_LASR_VIEW_0; 
MERGE library.TABLE_01 
     library.TABLE_02; 
BY COLUMN_01; 
RUN; 
/* Drop existing table */ 
%vdb_dt(LASRLIB.testtable_01); 
data LASRLIB.testtable_01 ( ); 
set TEMP_LASR_VIEW_0 (); 
run; 
/* Synchronize table registration */ 
%registerTable(
LIBRARY=%nrstr(/Shared Data/SAS Visual Analytics/Public/Visual Analytics Public LASR) 
, REPOSID=%str(A5UHNO19) 
, TABLEID=%str(A5UHN019.BF003CB7)); 

现在保存查询并运行它。再理论上,这应该起作用。可能需要调整一下。在获得完美之前,可能需要尝试几次。