2017-01-09 32 views
0

首先,我运行了这段代码并完成了。现在,我想从时间戳中提取仅包含数据和时间的日期。但是,我不知道该怎么做。我用GetYear,GetMonth,GetDay但总是弹出一个错误。从猪的时间戳中提取日期

define Quantile datafu.pig.stats.Quantile('21'); data_raw = LOAD 'California/2016/March-2016.csv' USING PigStorage(',') AS (tmc_code:chararray, measurement_tstamp:chararray, speed:int, average_speed:int, reference_speed:int, travel_time_minutes:int,confidence_score:int, cvalue:int); 

filtered_data = FILTER data_raw BY confidence_score == 30; 

data_reqd = GROUP filtered_data BY (tmc_code, measurement_tstamp); 

quantiles = FOREACH data_reqd GENERATE group.tmc_code, ToDate(group.measurement_tstamp,'YYYY-MM-DD HH:mm:ss') AS date, Quantile(filtered_data.speed); 

results = Limit quantiles 10; 

DUMP results; 

我将不胜感激,如果有人可以帮助我从measurement_tstamp只提取日期。

+0

有什么错误? –

回答

0

这是你如何能做到这一点

results_new = FOREACH quantiles GENERATE CONCAT(CONCAT(CONCAT((chararray)GetYear(date),'-')),(CONCAT((chararray)GetMonth(date),'-')),(chararray)GetDay(date)) AS Day; 

我已经回答了类似的问题here

+0

我用它,但这个错误弹出。错误1045: 无法推断org.apache.pig.builtin.CONCAT的匹配函数为多个或不匹配。请使用明确的演员。 –

+0

将单个物品投射到chararray,就像这样chararrayGetYear(date) –