即使我 运行 它两次,我如何避免在 proc append 中重复?
How can i avoid duplication in a proc append even if i run it twice?
我不能只从我的基础中删除重复项 table 因为我有一个 DATETIME 列所以它不会被视为重复项。
例子:
基础(第一次追加后):
+------+----------------------------+------+-----+
| name | date | id |year |
+------+----------------------------+------+-----+
| X |Thursday06july2020 16:21:06 | 303| 2019|
| Y |Thursday06july2020 16:21:06 | 91 | 2020|
+------+----------------------------+------+-----+
对我的数据进行一些修改后 table 我将在 :
+------+----------------------------+------+-----+
| name | date | id |year |
+------+----------------------------+------+-----+
| W |Friday07August2020 13:27:15 | 92 | 2019|
| X |Friday07August2020 13:27:15 | 303 | 2019|
| Y |Friday07August2020 13:27:15 | 91 | 2020|
| Z |Friday07August2020 13:27:15 | 45 | 2020|
+------+----------------------------+------+-----+
然后我想重新执行 proc 追加。
有什么方法可以比较日期列之外的所有列吗?
我希望它足够清楚。
在除基础 table 中的日期之外的所有列上创建主键。例如:
data basetable;
length pk .;
set basetable;
pk = cats(name, id, year);
run;
您可以使用它来更新数据中的值和列。
要继续使用 proc append
,您可以在 pk
上创建完整性约束,以防止在您的基础 table.
上重复
proc datasets lib=mylib nolist;
modify basetable;
ic create unique (pk);
quit;
如果重新创建 table,此完整性约束将被破坏。
我不能只从我的基础中删除重复项 table 因为我有一个 DATETIME 列所以它不会被视为重复项。
例子: 基础(第一次追加后):
+------+----------------------------+------+-----+
| name | date | id |year |
+------+----------------------------+------+-----+
| X |Thursday06july2020 16:21:06 | 303| 2019|
| Y |Thursday06july2020 16:21:06 | 91 | 2020|
+------+----------------------------+------+-----+
对我的数据进行一些修改后 table 我将在 :
+------+----------------------------+------+-----+
| name | date | id |year |
+------+----------------------------+------+-----+
| W |Friday07August2020 13:27:15 | 92 | 2019|
| X |Friday07August2020 13:27:15 | 303 | 2019|
| Y |Friday07August2020 13:27:15 | 91 | 2020|
| Z |Friday07August2020 13:27:15 | 45 | 2020|
+------+----------------------------+------+-----+
然后我想重新执行 proc 追加。 有什么方法可以比较日期列之外的所有列吗? 我希望它足够清楚。
在除基础 table 中的日期之外的所有列上创建主键。例如:
data basetable;
length pk .;
set basetable;
pk = cats(name, id, year);
run;
您可以使用它来更新数据中的值和列。
要继续使用 proc append
,您可以在 pk
上创建完整性约束,以防止在您的基础 table.
proc datasets lib=mylib nolist;
modify basetable;
ic create unique (pk);
quit;
如果重新创建 table,此完整性约束将被破坏。