2017-09-23 13 views
1

새 열을 만들 때 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] 

스크린 캐스트 :

enter image description here

GREL에서 솔루션 가능한 경우 나도 몰라.

+1

감사합니다. 컨텍스트와 독립적으로 행에 적용 할 수 있으므로 매우 합리적인 설계 결정이라고 생각합니다. 이것은 예를 들어 pyrefine과 같은 것을 사용하여 OpenRefine 연산 세트를 데이터 스트림 (점차적으로 발견 될 수있는 테이블)에 적용 할 수 있다는 것을 의미합니다. 나는 그것이 Wikidata 봇들에 대한 매우 강력한 패러다임이라고 생각합니다. – pintoch