OpenRefine: создать сдвинутую копию столбца

Интересно, позволяет ли OpenRefine получать доступ к данным из других строк при создании нового столбца. Я подозреваю, что это не так (и это был бы разумный принцип разработки), но вокруг этого может быть взлом.

Вот пример того, что можно было бы сделать: сдвиг столбца на одну строку.

У меня есть следующая таблица:

╔═════╦════════╗
║ row ║ Model  ║
╠═════╬════════╣
║   1 ║ Quest  ║
║   2 ║ DF     ║
║   3 ║ Waw    ║
║   4 ║ Strada ║
╚═════╩════════╝

И я хочу получить следующий результат:

╔═════╦════════╦══════════╗
║ row ║ Model  ║ Previous ║
╠═════╬════════╬══════════╣
║   1 ║ Quest  ║          ║
║   2 ║ DF     ║ Quest    ║
║   3 ║ Waw    ║ DF       ║
║   4 ║ Strada ║ Waw      ║
╚═════╩════════╩══════════╝

Глядя на https://github.com/OpenRefine/OpenRefine/wiki/Variables кажется, что нет никакой переменной, которая позволила бы вам получить доступ к информации вне текущей строки или записи, поэтому мне интересно, возможна ли такая операция.

1 ответ

Решение

К сожалению, в Open Refine нет переменной "column". Возможный обходной путь - превратить весь набор данных в одну запись, а затем применить немного Python/Jython.

Пример:

data = row['record']['cells']['Model']['value']
for i, el in enumerate(data):
    if value == el and i !=0:
        return data[i - 1]

Screencast:

введите описание изображения здесь

Я не знаю, возможно ли решение в GREL.

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