Dynamiczna pierwsza obserwacja: należy umieścić zmienną w firstobs =
Nie mogłem znaleźć niczego w google.
Mam zestaw danych i muszę go iterować w kawałkach, pierwszy fragment to: firstobs = 1 obs = 30000 drugi fragment to: firstobs = 30001 obs = 60000 trzeci: firstobs = 60001 obs = 90000
i tak dalej...
Czy to możliwe? Jak napisać takie rzeczy?
Edytowane
Mam te dane, pracując nad kilkoma milionami rekordów:
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;
Zgodnie z zaleceniami członków forum, ze względu na sposób, w jaki zadziałało wywołanie, muszę podzielić dane na porcje, aby program nie zwinął się, tak jak do tej pory,
więc pomyślałem o pętli pobierającej firstobs i zwiększając ją o 30K w każdej iteracji.
Problem polega na tym, że jak dotąd nie udało mi się uruchomić firstobsa ze zmienną