在豬,我有一個聲明,基本上附加日期到我的生成值。在生成語句格式化日期
Data = FOREACH Input GENERATE (CurrentTime()),FLATTEN(group), COUNT(guid)oas Cnt;
該輸出給出了ISO8601中的日期2013-05-25T09:01:38.914-04:00
。
我該如何做到這一點"YYYY-MM-DD"
?
在豬,我有一個聲明,基本上附加日期到我的生成值。在生成語句格式化日期
Data = FOREACH Input GENERATE (CurrentTime()),FLATTEN(group), COUNT(guid)oas Cnt;
該輸出給出了ISO8601中的日期2013-05-25T09:01:38.914-04:00
。
我該如何做到這一點"YYYY-MM-DD"
?
您有幾種選擇:
與豬的功能將它轉換:
如:
A = load ...
B = foreach A {
currTime = CurrentTime();
year = (chararray)GetYear(currTime);
month = (chararray)GetMonth(currTime);
day = (chararray)GetDay(currTime);
generate CONCAT(CONCAT(CONCAT(year, '-'), CONCAT(month, '-')),day) as myDate;
}
或通行的日期腳本作爲參數:
pig -f script.pig -param CURR_DATE=`date +%Y-%m-%d`
或者用腳本聲明:
%declare CURR_DATE `date +%Y-%m-%d`;
然後在腳本中將該變量稱爲'$CURR_DATE'
。
您也可以創建一個修改的 CurrentTime UDF,其中您將DateTime對象轉換爲Joda-Time庫的適當格式。
最簡單的就是在腳本的開頭聲明日期。
如果您使用的豬0.12或更高版本,可以使用 的ToString(CURRENTTIME(), 'YYYY-MM-DD')
你可以使用任何DateTime類型CURRENTTIME()而不是
有關日期時間格式,請參閱http://pig.apache.org/docs/r0.12.0/func.html#to-string。
嘿洛蘭德,謝謝你的回覆。事實上,我已經嘗試過將日期作爲參數方法。但今天的最終產出顯示了1983年,而不是2013-05-25。任何想法爲什麼?同樣的輸出參數可以正常工作,同時將其分配給存儲文件的名稱。例如:STORE Output INTO'Outputs $ CURR_DATE正常工作,並顯示爲Output2013-05-25。 – JohnMeek
這是因爲如果你做減法:2013-5-25你會得到1983.這就是爲什麼我使用引號(''$ CURR_DATE''),所以它將被作爲chararray而不是int來處理。 –
woks perfect.thanks。 – JohnMeek