특정 Impala 버전에서 SELECT *의 결과에 complex type 컬럼이 포함되지 않는다.
원본은 ARRAY 데이터 손실이 아니라 SELECT *의 반환 제약이었다. 배열 전개는 행 수를 바꾸므로 전체 ARRAY 반환과 동일한 결과 구조가 아니다.
ARRAY 컬럼을 명시적으로 선택하고, 원소 단위 결과가 필요하면 collection join을 사용한다.
확인 수준: 추가 조사 해법 · 해당 케이스 적용 결과 미확인
적용 조건: <...>와 예시 DB·테이블·경로·수치는 실제 확인값으로 바꾼다. 명령과 메뉴는 참고 문서를 바탕으로 보강한 예시이며 대상 시스템에서 실행하지 않았다. 버전·원인에 따른 분기와 남은 확인 사항은 아래에 명시한다.
DESCRIBE db.events;로 실제 ARRAY 컬럼과 실행 엔진 버전을 확인한다. 원본에서는 ARRAY 컬럼 명시 조회가 가능했다.SELECT event_id, items FROM db.events LIMIT 10;
SELECT e.event_id, a.pos, a.item
FROM db.events e, e.items a
LIMIT 100;
items가 ARRAY<STRUCT<...>>이면 a.item.<field>를 실제 필드명으로 바꾼다. 위 collection join은 빈 배열의 부모 행을 보존하지 않으므로 원본 행 수와 단순 비교하지 않는다.배열 컬럼의 전체 값 또는 원소·순서가 기대대로 보이는지 확인하고 빈 배열/NULL도 별도로 시험한다.