2014-07-10 3 views
0

복잡한 foreach 문을 사용하여 데이터를 생성하고 있습니다. 다음은 돼지 SUBSTRING 함수가 열을 생성하지 않습니다.

내 코드입니다

(2013년 7월 1일) : 이 샘플 행입니다

joined_data = foreach old_data { 

     date = old_data::date; 
     month = SUBSTRING(date, 5, 7); 

generate date, month; 
}; 

내가 가서 테이블을 사용하여, 나는 다음과 같은 오류가 발생합니다 :

<file script.pig, line 24, column 66> Invalid field projection. Projected field [month] does not exist in schema: old_data::date:chararray,:chararray. 

왜 월에 이름이 없습니까? 명확하게 이름을지었습니다.

내가 쓸 때 :

joined_data = foreach data { 

     date = old_data::date; 
     month = SUBSTRING(date, 5, 7); 

    generate date, $1; 
    }; 

이 코드는 결코 실행되지 완료 (이 무대를 줄일 마칠 수 없습니다).

왜 이런 일이 벌어지고 있는지, 그리고 내가 돼지 개월이 내가 그 달 열에 준 이름을 집어들 수 있는지 어떻게 생각하세요?

감사합니다.

+0

어리석은 해결 방법을 발견 : 생성 날짜, 달로 달; – Michal

+0

바보 같은 해결 방법이 아니며 "월"에 할당하면 돼지에게 스키마에 대해 아무 것도 말하지 않습니다. – bridiver

답변

0

Indeep 당신은 AS의 달 라벨을 강제 할 수 있지만 $ 1이 작동하지 않는 이유는 설명하지 않습니다 S

난 당신이 적절한 정규식으로 EXTRACT을 사용할 것을 권장하고 DESCRIBE joined_data;을 시도 할 것 그리고 DESCRIBE old_data; 라벨링 과정을 볼 수 있습니다 :)

관련 문제