2014-07-12 3 views
1

Hadoop 용 HIVE를 사용 중입니다. 구조체의 가격 필드에서 가격 값을 선택하고 싶습니다. 그러나 구조체는 struct 구조체의 일부입니다.구조체 배열에서 선택하는 방법

uid  string 
timestamp  int 
eventdate  string 
products array<struct 
    <internalId:int, 
    category:int, 
    alternateId:string, 
    price:double, 
    quantity:int, 
    externalId:string>> 

나는 터미널 창을 통해서가 아니라 exectued .HQL 파일을 사용하여 쿼리 할 것입니다.

(즉 하이브 -f blah.hql> blah.txt)

어떻게 구조체의 제품 배열 중 가격을 선택합니까?

- 어떤 것이 있는지 알 수 없습니다. 이상한 또는 널 출력을 얻는.

Select 
    table.products.price, 
    table.products[0].price, 
    table.products['price'] 
from table 
+0

외부 클러스터 팀의 일부에서 이상한 데이터베이스 설정이라고 생각합니다. 구조체 컬럼을 만드는 대신 배열로 만들었습니다. 그러나 주어진 행의 구조체에는 배열에 단 하나의 요소 만 있습니다. 그래서 그 구조체는 요소 0, 그리고 나는 그것의 연관된 필드 값을 요청할 수 있습니다. 그래서 products [0]은 onle 배열 요소이고, products [0] .price는 저에게 가격을 줄 것입니다. 그게 나를 몇 시간이나 괴롭혔다는 것을 믿을 수 없다! – VISQL

답변

0

않음

의 produts [0]

구조체 표에 주어진 행에 대한 어레이에서 유일한 요소이기 때문에

.price. 이것은 제품 배열의 미래 요소를 허용 할 수 있지만 그 열을 구조체로 만들면 좋습니다.

관련 문제