【发布时间】:2016-03-08 10:40:09
【问题描述】:
【问题讨论】:
【问题讨论】:
SAS VA Data Builder 使用 SQL 查询。 所以没有像合并这样的数据步骤。使用 Full-Join,或者如果您有一个前导表,则在该表上使用 Left-Join,将获得与使用 by 语句合并的相同结果。
使用所有相关 ID 连接 GUI 中的两个表,或者只在代码窗格中自己编辑代码。
编辑: 如果您想在 VA 数据生成器中附加数据:这不是在查询中完成的。您直接右键单击内存库中的基表并选择附加选项。
【讨论】:
是的,数据准备在 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;
现在预览查询的结果(只是为了确保它能够正常工作,因为它是一个简单的选择语句,所以应该这样做)。接下来,您将保存查询。这将生成您需要的最后一段代码...... registertable 宏。这将创建分配给您在开始时拥有的输出表名的 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));
现在保存查询并运行它。同样,理论上这应该有效。可能需要稍微调整一下。在完美之前可能需要一些尝试。
【讨论】: