2017-02-12 3 views
9

필드를 키로 사용하는 변수 키의 맵 값을 얻을 수있는 방법이 있습니까? 예 : 우리 회사의 데이터는 다른 로케일에 대해 서로 다른 것 같은 키로 로케일을 사용하여지도의 가치를 얻을 수 있습니다 내가 본질적으로 원하는이돼지지도에서 변수 키 값을 얻는 방법은 무엇입니까?

{"en_US", (["en_US" : "English Name"], ["fr_FR" : "French Name"])} 

같은 로케일 이름 필드가 있습니다.

company_data = load '/data' using PigStorage(); 

final_company_data = FOREACH company_data GENERATE 
              value.locale as locale 
              value.name#locale; 

다음은 나에게 나는 우리가 value.name 번호의 '의 ko 페이지를'필요한지도에서 값을 검색하는 것을 이해 오류 사촌을 제공합니다. 로케일을 사용하여 올바른 값으로 대체 할 수있는 방법이 있습니까?

Output : final_company_data = {"en_US", "English Name"} 

답변

5

나는 돼지에서 그렇게 할 수 없다는 것을 기억합니다. 열쇠는 정적 인 값이어야합니다. 키 세트의 크기가 이런 식으로 뭔가를 시도 할 수 있습니다 너무 큰 수없는 경우

final_company_data = FOREACH company_data GENERATE 
             value.locale as locale 
             value.name#'en_US'; 

(그러나 이것은 타이핑을 많이 포함) : 그래서 예를 들어,이 작업을해야

en = FILTER company_data BY value.locale == 'en_US'; 
final_company_data_en = FOREACH company_data GENERATE 
             value.locale as locale 
             value.name#'en_US'; 
fr = FILTER company_data BY value.locale == 'fr_FR'; 
final_company_data_en = FOREACH company_data GENERATE 
             value.locale as locale 
             value.name#'fr_FR'; 

을 모든이 작업을 수행 키를 누른 다음 모든 하위 집합의 합집합을 수행하십시오. 이 솔루션은 가난하고 못생긴지만 작동합니다.

+0

감사합니다. – TommyT

+0

이것이 당신의 문제를 해결하면 대답을 upvote 또는 받아 들일 수 있습니다 :) – bartektartanus

+0

그것은 않습니다 .. 나는 누군가가 뭔가를 더 나은 coz를 가지고 있는지 보길 기다리고 있습니다. 나는 어떤 대안도 생각할 수 없습니다. – TommyT