2015-12-06 2 views
0

Я использую базу данных IMDB, чтобы найти актера/актрису с самым высоким рейтингом и был в большинстве фильмов за определенный год. Я пытаюсь присоединиться к набору актеров с их рейтингами. Затем отфильтруйте год и отсортируйте данные на основе наивысшего рейтинга и количества фильмов.Как мне получить доступ к полям данных внутри сумки в лайнере для свиньи?

joinedActorRating = JOIN ratings by movie, actors BY movie; 
actorRating = FOREACH joinedActorRating GENERATE *; 
actorsYear = FILTER actorRating BY(year MATCHES '2000'); 
groupedYear = GROUP actorsYear BY (year,rating,firstName,lastName); 
aggregatedYear = FOREACH groupedYear GENERATE group, COUNT (actorsYear) AS movieCount; 
unaggregatedYear = FOREACH aggregatedYear GENERATE FLATTEN(group) AS (year,rating,firstName,lastName); 
sortRating = ORDER unaggregatedYear BY rating ASC, count ASC; 
dump sortRating; 

Компилятор говорит, что вторая линия является «Invalid проекции поля», но я не уверен, как получить доступ поля года после объединения двух наборов данных. Кто-нибудь знает, как это исправить?

ответ

0

После вашего соединения вам нужно спроектировать поля, которые вы хотите, до вашего текущего отношения.

joinedActorRating = JOIN ratings by movie, actors BY movie; 
actorRating = FOREACH joinedActorRating GENERATE ratings::movie as movie 
    , ratings::rank as rank, ratings::year as year, actors::firstName as firstName 
    , actors::lastName as lastName; 

Я не уверен, какие столбцы в какой таблице (кроме фильма в обоих), потому что вы не включили две таблицы, так что я просто догадался. Вы можете изменить прогнозы по мере необходимости.