Функцията Pig SUBSTRING не генерира колона

Използвам сложен оператор foreach, за да генерирам данните си. Това е примерен ред:

(2013-07-01)

По-долу е моят код:

    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;
  };

Кодът никога не завършва изпълнението си (не може да завърши етапа на намаляване).

Някаква идея защо се случва това и как мога да се уверя, че Pig ще разпознае името, което дадох на колоната за месеца?

Благодаря.


person Michal    schedule 10.07.2014    source източник
comment
Намерих глупаво решение: генериране на дата, месец като месец;   -  person Michal    schedule 11.07.2014
comment
Това не е глупаво решение, присвояването му на месец не казва нищо на прасето за схемата   -  person bridiver    schedule 12.07.2014


Отговори (1)


Всъщност можете да принудите етикетирането с AS месеца, но това не обяснява защо $1 не работи :S

Бих ви препоръчал да използвате EXTRACT с подходящия регулярен израз и да опитате DESCRIBE joined_data; и DESCRIBE old_data;, за да видите процеса на етикетиране :)

person Samoht-Sann    schedule 14.07.2014