SAS, код массива, два индекса, удаление записей - PullRequest
0 голосов
/ 16 октября 2018

Я просматриваю некоторый код и задаюсь вопросом, что это делает.Ниже приведены комментарии к коду.Я до сих пор не уверен, что этот код делает даже с комментариями кода.Я использовал массивы, но не знаком с этим кодом.Похоже, этот код дедуплицируется с помощью двух индексов.Это верно?Так что, если есть комбинация CCS_DR_IDX и TXN_IDX, он удалит эти записи?

Теперь обработайте случаи, когда доллар совпадает.Если ccs_dr_idx уже использовался, удалите запись.Отброшенные txns здесь будут добавлены обратно с данными претензии, которые называются отсутствующими.

PROC SORT DATA=OUT.REQ_1_9_F_AMT_MATCH; BY CCS_DR_IDX DATEDIF; RUN;

    DATA OUT.REQ_1_9_F_AMT_MATCH_V2;
        SET OUT.REQ_1_9_F_AMT_MATCH;

        ARRAY id_one{40000} id_one1-id_one40000;
        ARRAY id_two{40000} id_two1-id_two40000;

        RETAIN id_one1-id_one40000 id_two1-id_two40000;

        IF _n_=1 then i=1;
        else i+1;

        do j=1 to i;
            if CCS_DR_IDX=id_one{j} then delete;
        end;

        do k = 1 to i;
                if TXN_IDX = id_two{k} then delete;
        end;

        id_one{i}=CCS_DR_IDX;
        id_two{i}=TXN_IDX;

        drop i j k  id_one1-id_one40000 id_two1-id_two40000;

    run;

1 Ответ

0 голосов
/ 17 октября 2018

Сортировка:

BY CCS_DR_IDX DATEDIF;

Фильтрация или при выборе происходит, когда элемент управления достигает нижней части шага данных и неявно OUTPUT с.Это происходит только в том случае, если CCS_DR_IDX и TXN_IDX - это комбинация, в которой ни один из них не появлялся ранее.

Поскольку вы отсортировали по CCS_DR_IDX, вы можете знать, что существует неявная группировка, ине более одной записи на CCS_DR_IDX вывод, и для первой группы это должна быть первая запись в группе.Каждая последующая строка в группе CCS_DR_IDX после вывода будет соответствовать записи в id_one и будет отброшена DELETE.

Когда вы начнете обрабатывать следующую группу CCS_DR_IDX, строки будутобрабатываются до тех пор, пока вы не достигнете следующего отличительного TXN_ID относительно тех, которые отслеживаются в id_two.Поскольку сортировка имела второй ключ DATDIF, можно сказать, что на выходе будет "выбор первых встречающихся комбинаций уникальных парных элементов CCS_DR_IDX TXN_ID" (что-то вроде парной выборки без повторов.)

Возможен случай, когда некоторый CCS_DR_IDX отсутствует на выходе - это может произойти, если группа содержит только TX_ID s, которые произошли в предыдущие CCS_DR_IDX s.

Не видя модель данных и причины комбинации (возможно, какое-то декартово соединение), трудно сделать менее смутное утверждение о том, что выбирается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...