Преобразование SAS в PySpark - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть следующий код SAS:

   data part1;
       set current.part;
       by DEVICE_ID part_flag_d
       if first.DEVICE_ID or first.part_flag_d;
           ITEM_NO = 0;
       end;
       else do;
           ITEM_NO + 1;
       end;
   run;

Я конвертирую это в PySpark и застреваю. У меня есть «часть» DataFrame. Когда я застреваю, я пытаюсь преобразовать следующую строку:

   if first.DEVICE_ID or first.part_flag_d;

Я знаю, что она получает первую запись в каждом столбце, но проверяет ли она также на ноль? Что говорит условие ИЛИ?

Буду признателен за любые указания по написанию этой строки.

1 Ответ

0 голосов
/ 04 ноября 2019

Пожалуйста, обратитесь к документации для оператора by:

http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/a000202968.htm#a002651313

Обработка по группам

SAS присваивает FIRST следующие значения. переменная и LAST.variable:

FIRST.variable имеет значение 1 при следующих условиях:

, когда текущее наблюдение является первым наблюдением, которое считывается из набора данных.

когда вы не используете опцию GROUPFORMAT и внутреннее значение переменной в текущем наблюдении отличается от внутреннего значения в предыдущем наблюдении.

Если вы используете опцию GROUPFORMAT, FIRST.variable имеетзначение 1, если форматированное значение переменной в текущем наблюдении отличается от форматированного значения в предыдущем наблюдении.

FIRST.variable имеет значение 1 для любой предыдущей переменной в операторе BY.

Во всех других случаях FIRST.variable имеет значение 0.

LAST.variable имеет значение 1 при следующих условияхнс:

  • , когда текущее наблюдение является последним наблюдением, считанным из набора данных.

  • при использовании параметра GROUPFORMAT ивнутреннее значение переменной в текущем наблюдении отличается от внутреннего значения в следующем наблюдении.

Если вы используете опцию GROUPFORMAT, LAST.variable имеет значение 1, когда отформатированное значениепеременной в текущем наблюдении отличается от форматированного значения в следующем наблюдении.

LAST.variable имеет значение 1 для любой предыдущей переменной в операторе BY.

Во всех других случаях, LAST.variable имеет значение 0.

...