Ключевые слова LEFT и RIGHT в ECL

Я новичок в ECL и не могу понять ключевые слова RIGHT и LEFT (используемые в DEDUP, GROUP и других функциях). Как они работают? В справочном руководстве ECL есть один параграф о том, что он должен делать.

например, что он делает в этом коде?

MyRec := RECORD
    STRING1 Value1;
    STRING1 Value2;
END;

SomeFile := DATASET([{'C','G'},
                     {'C','C'},
                     {'A','X'},
                     {'B','G'},
                     {'A','B'}], MyRec);

Dedup2 := DEDUP(Val2Sort, LEFT.Value2 = RIGHT.Value2);

3 ответа

LEFT и RIGHT — это стандартное соглашение об именах в ECL при работе с двумя наборами записей одновременно. С такими операторами, как DEDUP, ROLLUP и ITERATE, LEFT и RIGHT относятся к парам записей в одном и том же наборе записей, LEFT — это первая запись в паре, а RIGHT — вторая.

В операторе JOIN LEFT и RIGHT могут быть разными наборами записей. Когда вы изучаете ECL, язык имеет мощные функции преобразования данных, удачно названные функциями TRANSFORM. В этих функциях вы увидите еще одно ключевое слово SELF , которое представляет результат любого преобразования.

Таким образом, в типичном JOIN вы можете одновременно иметь в памяти «левую», «правую» и «самостоятельную» запись. Таким образом, ключевые слова помогают компилятору отличить , на какое поле в записи вы ссылаетесь, когда имя поля совпадает (например, поле «адрес»).

Очевидно, проблема была в том, как я видел данные. Я отформатировал НАБОР ДАННЫХ как столбец, чтобы его было легче понять, и в итоге испортил мой просмотр. LEFT и RIGHT - это каждый реестр в DATASET, который должен выглядеть следующим образом:

DATASET([{'C','G'},{'C','C'},{'A','X'},{'B','G'},{'A','B'}])

Таким образом, на первой итерации {'C','G'} (LEFT) будут сравниваться с {'C','C'} (RIGHT) и так далее.

Все ключевые слова RIGHT и LEFT в этом контексте указывают, какой набор данных вы хотите справа и слева. В другом контексте в ECL это может означать, что вы хотите сохранить данные СПРАВА или СЛЕВА после выполнения процедуры.
Не здесь.

Другие вопросы по тегам