【发布时间】:2014-01-08 14:50:10
【问题描述】:
我在谷歌上找不到任何东西。
我有一个数据集,需要分块迭代它, 第一个块是: firstobs = 1 obs = 30000 第二块是: firstobs = 30001 obs = 60000 第三: firstobs = 60001 obs = 90000
等等……
有可能吗? 这种东西怎么写?
已编辑
我有这些数据,正在处理几百万条记录:
data _null_;
set all_include_Stornos ;
IF TREATMENT_IND = 1 AND DDS_ROW_IND NE 1 THEN DO;
CALL EXECUTE ('%STORNO_TKUFA ('||POLICY_RK||');');
CALL EXECUTE ('%UPDATE (STORNO_TKUFA_CUMULATE);');
END;
IF TREATMENT_IND in (4) AND DDS_ROW_IND NE 1 THEN DO;
CALL EXECUTE ('%HAKPAA ('||POLICY_RK||','||POLICY_VERSION||');');
call execute ('%UPDATE(HAKPAA_CUMULATE);');
END;
IF TREATMENT_IND = 5 AND DDS_ROW_IND NE 1 and count_bitul_no <2 or (count_bitul_no >1 and max_bitul_ver = policy_verSion ) THEN DO;
CALL EXECUTE ('%BITUL ('||POLICY_RK||','||POLICY_VERSION||');');
CALL EXECUTE ('%UPDATE(BITUL_CUMULATE);');
END;
IF TREATMENT_IND = 6 AND DDS_ROW_IND NE 1 THEN DO;
CALL EXECUTE ('%LAST_STATE ('||POLICY_RK||','||POLICY_VERSION||');');
CALL EXECUTE ('%UPDATE (LAST_STATE_calc);');
END;
IF DDS_ROW_IND NE 1 and ((PREV_TREATMENT_IND = 4 AND TREATMENT_IND NOT IN (1,2,5)) or treatment_ind = 3) THEN DO;
CALL EXECUTE ('%HAFSHARA ('||POLICY_RK||','||POLICY_VERSION||');');
CALL EXECUTE ('%UPDATE (HAFSHARA_CUMULATE);');
END;
IF TREATMENT_IND = 2 AND POLICY_VERSION - 1 = max_bitul_ver AND DDS_ROW_IND NE 1 THEN DO;
CALL EXECUTE ('%STORNO_BITUL ('||POLICY_RK||','||POLICY_VERSION||');');
CALL EXECUTE ('%UPDATE (STORNO_BITUL_CUMULATE);');
END;
RUN;
根据论坛成员的建议, 由于调用执行工作的方式, 我需要将数据分成块,这样程序就不会像现在一样崩溃,
所以我想到了一个循环,每次迭代都将 firstobs 增加 30K。
问题是,到目前为止,我无法让 firstobs 使用变量
【问题讨论】:
-
你能告诉我们更多关于你想要做什么的信息吗?有多种方法可以处理这个问题,但这取决于你想要什么。
-
感谢 DomPazz 的回复。希望现在你会更容易理解我的问题。再次感谢。
标签: sas