하이브의 STRUCTS 배열로 선택하는 데 문제가 있습니다.하이브 스트럭처의 배열을 만드는 SELECT 문
내 소스 테이블은 다음과 같습니다
+-------------+--+
| field |
+-------------+--+
| id |
| fieldid |
| fieldlabel |
| fieldtype |
| answer_id |
| unitname |
+-------------+--+
이 ID가 조사 아이디, 중간에 네 개의 필드는 응답 데이터, 그리고 unitname이 사업 단위는 설문 조사 데이터입니다 조사는에 속한다.
각 설문 ID에 대한 모든 답변에 대해 구조체 배열을 만들어야합니다. 나는이 일 것이라고 생각하지만, 그렇지 않은 :
select id,
array(
named_struct(
"field_id",
fieldid,
"field_label",
fieldlabel,
"field_type",
fieldtype,
"answer_id",
answer_id,)) as answers,
unitname
from new_answers;
무슨 반환하면 해당 답변에 대한 하나의 구조체의 배열로 각각 조사 응답 (FIELD_ID)는 다음과 같이이다 :
id | answers | unitname
1 | [{"field_id":175877,"field_label":"Comment","field_type":"COMMENT","answer_id":8990947803}] | Location1
2 | [{"field_id":47824,"field_label":"Language","field_type":"MULTIPLE_CHOICE","answer_id":8990950069}] | Location2
2 | [{"field_id":48187,"field_label":"Language Type","field_type":"MULTIPLE_CHOICE","answer_id":8990950070}] | Location2
2 | [{"field_id":47829,"field_label":"Trans #","field_type":"TEXT","answer_id":8990950071}] | Location2
그러나() 쿼리 내가 검색하고 검색 한
id | answers | unitname
1 | [{"field_id":175877,"field_label":"Comment","field_type":"COMMENT","answer_id":8990947803}] | Location1
2 | [{"field_id":47824,"field_label":"Language","field_type":"MULTIPLE_CHOICE","answer_id":8990950069},
{"field_id":48187,"field_label":"Language Type","field_type":"MULTIPLE_CHOICE","answer_id":8990950070},
{"field_id":47829,"field_label":"Trans #","field_type":"TEXT","answer_id":8990950071}] | Location2
하지만, 내가 찾는거야 모든 해답은 INSERT INTO .... 값을 사용하여 할 것 같다 : 제가에 도착해야 할 것은 이것이다. 나는 이미 테이블 구조를 가지고있다. ARRAY를 ARRAY로 가져올 수 없습니다.
모든 도움을 주시면 감사하겠습니다.
재생 목적, 필요가있을 경우 : 당신이 찾고있는 것 같다
CREATE TABLE `new_answers`(
`id` bigint,
`fieldid` bigint,
`fieldlabel` string,
`fieldtype` string,
`answer_id` bigint,
`unitname` string)
INSERT INTO new_answers VALUES
(1,175877,"Comment","COMMENT",8990947803,"Location1"),
(2,47824,"Language","MULTIPLE_CHOICE",8990950069,"Location2"),
(2,48187,"Language Type","MULTIPLE_CHOICE",8990950070,"Location2"),
(2,47829,"Trans #","TEXT",8990950071,"Location2");
감사 :
는 다음과 같은 결과를 제공합니다 , @ 게이브. 그렇게하면 대답을 받아 들일 것입니다. 그 환경에서의 보안은 문제였습니다. 그래서 저는 벽돌집을 넣을 수 있을지 확신하지 못했습니다. 다른 한편으로는, 나는 질문을 할 때 내가 일했던 회사에서 더 이상 일하지 않기 때문에, 실용적인 답변을 얻는 것이 오늘 나에게 충분하다. –