我有一个月份文件,如ABCD_201310,ABCD_201311等......
这些文件都属于同一个集市,但我试图将它们与SQL视图垂直集成。我试图
SELECT * FROM LIBPATH.ABCD_201310 UNION ALL SELECT * FROM LIBPATH.ABCD_201311
我遇到的问题是列类型/格式发生了变化而作业失败了。
有没有更好的方法将这些合并到非物化视图中?
答案 0 :(得分:0)
两点: 一,我将它们设置在数据步骤中,它的代码更清晰。
data blah/view=blah;
set libpath.abcd_201310 libpath.abcd_201311 ... ;
run;
或
set libpath.abcd_201:; *everything starting with abcd_201;
或
set libpath.abcd_2013:;
等
其中,这些都不会很好地处理类型问题,但数据步骤可能会更适合数据集的列数和顺序。 SAS无法轻松(即,即时和灵活地)处理此问题。如何实际处理它的具体细节取决于您的问题。如果您有一个或两个“坏”数据集且其他数据集相同,则可以在set语句中执行特定的重新编码。
data want/view=want;
set libpath.abcd_201310(rename=shouldbenumcol=shouldbenumcol_r) libpath.abcd_20311;
if not missing(shouldbenumcol_r) then shouldbenumcol=input(shouldbenumcol_r,BEST.);
run;
如果它是一个模式(即某个点之后的所有数据集都有此问题),您可以生成代码来解决这个问题,而不是输入它。您还可以解析每个表的内容,并找出哪些列将成为问题。这一切都取决于究竟出了什么问题,以及未来需要多大的灵活性(即,如果这是一个每个月都无法引起注意但每个月都有新问题风险的生产工作,你必须要小心一点;你可以考虑将个人观点转换为角色,然后再重新转换所需的数字。)