Вычислить значение поля на основе нескольких строк AWS Glue - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть фрейм данных в Glue. Рассмотрим следующий формат:

a,b,c,d,e
1,2,3,4,5
3,4,5,6,7

Теперь я хочу применить встроенное преобразование Клея для столбцов, чтобы заменить значение.

У меня есть функция custom_sum, которая принимает значение в столбце d и e и предыдущие значения тех же столбцов, что и входные данные, и возвращает новое значение, которое я добавить в качестве нового значения столбца

В этом случае для первой строки потребуются значения 4 и 5 (так как предыдущих значений не существует)

и для второй строки будут приняты значения 6 , 7 и предыдущие значения 4 и 5 и возврат скажем 22 * ​​1028 *

Из документации мне кажется, что я могу использовать Map для преобразования.

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

Ниже приведен небольшой фрагмент кода:

mapped_columns = ApplyMapping.apply(frame=input_dynamic_frame, 
                                    mappings=[("col1", "string", "a", "int"),("col2", "string", "b", "int"),("col3", "string", "c", "int"),("col4", "string", "d", "int"),("col5", "string", "e", "int")],transformation_ctx="mapped_columns")

selected_fields = SelectFields.apply(frame=mapped_columns,
                                     paths=["a", "b", "c", "d", "e"],transformation_ctx="selected_fields")

def custom_sum(dynamicRecord):
    """
        take current row 'd' and 'e' columns and previous row 'd' and 'e' columns
    """
    return dynamicRecord

output_mapping = Map.apply(frame = selected_fields, f = custom_sum, transformation_ctx = "output_mapping")
...