2017-12-08 21 views
0

Spoon을 사용하여 트윗에 대한 정보가있는 CSV 파일을 읽는 중입니다. created_at 필드가 있는데 그 때 트윗이 전송되었습니다.Pentaho Spoon을 사용한 날짜 데이터 유형 관련 오류

그러나 형식이 다양하며 일부 사례는 'yyyy/MM/dd HH:mm', 'yyyy-MM-dd HH:mm', 'MM/dd HH:mm' and 'MM-dd'이며 오류가 발생합니다.

내가 원하는 것은 날짜 데이터 형식을 사용하고 모든 데이터를 캡처하는 것입니다. strings cut 단계를 사용하거나 데이터 유형을 string으로 변경하고 글자의 길이를 늘리는 방법을 생각했지만 데이터가 손실 될 수 있습니다. 내가 뭘 할 수 있을까?

답변

0

그냥 크기가없는 String으로 읽습니다.

사용 사례에 따라 명시 적으로 날짜 (게으른 평가)로 변환하지 않아도됩니다.

날짜로 변환해야하는 경우 new Date()이 다소 용인되는 Javascript 단계를 시도하십시오.

그렇지 않으면 정규식을 사용하여 형식을 테스트 할 수 있습니다. 나는 형식에게주고 걸릴 경우

var created_date; 
if(regex = created_at.match(/(\d\d\d\d\)\/(\d\d)\/(\d\d) (\d\d):(\d\d)/)) 
    created_date = new Date(regex[1], regex[2], regex[3], regex[4], regex[5]); 
if(regex = created_at.match(/(\d\d\d\d\)\-(\d\d)\-(\d\d) (\d\d):(\d\d)/)) 
    created_date = new Date(regex[1], regex[2], regex[3], regex[4], regex[5]); 
if(regex = created_at.match(/(\d\d)\/(\d\d) (\d\d):(\d\d)/)) 
    created_date = new Date(new Date().getFullYear(), regex[1], regex[2], regex[3], regex[4]); 
if(regex = created_at.match(/(\d\d)\/(\d\d)) 
    created_date = new Date(new Date().getFullYear(), regex[1], regex[2]); 

그런 다음 Date 데이터 유형 created_data을 저장 'yyyy/MM/dd HH:mm', 'yyyy-MM-dd HH:mm', 'MM/dd HH:mm' and 'MM-dd'를,이 같은 코딩됩니다. 모든 형식이 정의 될 때까지 출력 플로우의 널 값을 점검하십시오.

+0

그러나'created_at' 필드로 데이터를 분석하고 싶다면 문자열로 읽는 것이별로 유용하지 않을 것입니다. 내 작업은 주로 Spoon을 사용하여 수행해야하므로 최후의 수단으로 JavaScript 또는 Java를 사용합니다. – AshNaz87

+0

인사말은 스푼이 아니라 트위터로 간다. 스푼에서'Modified Javascript Value' 단계를 사용하십시오. 'User Defined Java Class'보다 훨씬 쉽습니다. 그에 따라 내 대답을 업데이 트되었습니다. – AlainD