Hive에서 중첩 된 JSON 개체를 추출하는 방법

스텔라

중첩 된 Json 형식의 데이터가있는 "impact"라는 열이 있습니다.

입력: [{"internalid":"079","impactid":[{"position":"1","typeid":"NOEUD","value":"G1"},{"position":"2","typeid":"ID","value":"001"},{"position":"3","typeid":"CODE_CI","value":"14"}],"typeid":"BTS","cdrs":"X110","belong":"OF","impactclass":"R","count":"0","numberaccessimpacted":"0","impactcalculationrequest":null},{"internalid":"6381075","impactid":[{"position":"1","typeid":"NOEUD","value":"G3"},{"position":"2","typeid":"ID","value":"003"},{"position":"3","typeid":"CI","value":"58"}],"typeid":"BTS","cdrs":"X110","belong":"OF","impactclass":"R","count":"0","numberaccessimpacted":"0","impactcalculationrequest":null},{"internalid":"6381071","impactid":[{"position":"1","typeid":"NOEUD","value":"G2"},{"position":"2","typeid":"IDT","value":"002"},{"position":"3","typeid":"CI","value":"57"}],"typeid":"BTS","cdrs":"X110","belong":"OF","impactclass":"R","count":"0","numberaccessimpacted":"0","impactcalculationrequest":null}]

아래 코드를 사용합니다.

SELECT 
       get_json_object(single_json_table.identifiant, '$.position') AS impact_position,
       get_json_object(single_json_table.identifiant, '$.value')  AS impact_value
   FROM 
   (SELECT exp2.identifiant
  FROM  socle s
  lateral view explode(split(regexp_replace(substr(impact, 2, length(impact)-2),
          '},\\{"', '},,,,{"'), ',,,,')) exp2 as identifiant   
           )single_json_table 

결과는 다음과 같습니다. 첫 번째 위치와 값을 건너 뜁니다. 누구든지 어떻게 고칠 수 있는지 알고 있습니까?

impact_position  |  impact_value
(null)                (null)
2                     001
3                     14
(null)                (null)
2                     003
3                     58
(null)                (null)
2                     002
3                     57 
leftjoin

입력은 중첩 배열이있는 JSON입니다. 상위 레벨 배열은 전체 입력이며 struct <internalid : string, impactid : array <struct <>>>를 impactid포함하며 다음과 같은 struct 요소를 포함하는 중첩 배열입니다.{"position":"1","typeid":"NOEUD","value":"G1"}

두 배열을 모두 분해해야합니다. 먼저 위쪽 배열을 분해합니다. 구분 기호를 변경하고, 분할하고, 분해 한 다음 중첩 배열에 대해서도 동일하게 수행합니다.

데모:

with socle as (
select '[{"internalid":"079","impactid":[{"position":"1","typeid":"NOEUD","value":"G1"},{"position":"2","typeid":"ID","value":"001"},{"position":"3","typeid":"CODE_CI","value":"14"}],"typeid":"BTS","cdrs":"X110","belong":"OF","impactclass":"R","count":"0","numberaccessimpacted":"0","impactcalculationrequest":null},{"internalid":"6381075","impactid":[{"position":"1","typeid":"NOEUD","value":"G3"},{"position":"2","typeid":"ID","value":"003"},{"position":"3","typeid":"CI","value":"58"}],"typeid":"BTS","cdrs":"X110","belong":"OF","impactclass":"R","count":"0","numberaccessimpacted":"0","impactcalculationrequest":null},{"internalid":"6381071","impactid":[{"position":"1","typeid":"NOEUD","value":"G2"},{"position":"2","typeid":"IDT","value":"002"},{"position":"3","typeid":"CI","value":"57"}],"typeid":"BTS","cdrs":"X110","belong":"OF","impactclass":"R","count":"0","numberaccessimpacted":"0","impactcalculationrequest":null}]'
as impact

)

select internalid,
       get_json_object(e.impact, '$.position')  as position,
       get_json_object(e.impact, '$.value')  as value
from
(
select get_json_object(impacts, '$.internalid') internalid,
      --extract inner impact array, remove [], convert delimiters 
       regexp_replace(regexp_replace(get_json_object(impacts,'$.impactid'),'^\\[|\\]$',''),'\\},\\{','},,,,{') impact
from 
(
SELECT --First we need to explode upper array. Since it is a string, 
       --we need to prepare delimiters to be able to explode it
       --remove first [ and last ], replace delimiters between inner structure with 4 commas
       regexp_replace(regexp_replace(s.impact,'^\\[|\\]$',''),'\\},\\{"internalid"','},,,,{"internalid"') upper_array_str 
  FROM  socle s
)s lateral view explode (split(upper_array_str, ',,,,')) e as impacts --get upper array element
)s lateral view explode (split(impact, ',,,,') ) e as impact

결과:

internalid  position    value
079         1          G1
079         2          001
079         3          14
6381075     1          G3
6381075     2          003
6381075     3          58
6381071     1          G2
6381071     2          002
6381071     3          57

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Android에서 중첩 된 JSON 개체를 처리하는 방법

분류에서Dev

DataGrid C # WPF에 중첩 된 개체를 추가하는 방법

분류에서Dev

Json Extractor를 사용하여 Jmeter의 중첩 된 Json에서 데이터를 추출하는 방법

분류에서Dev

Python을 사용하여 웹 사이트에서 독립적으로 중첩 된 여러 JSON 개체 및 키를 추출하는 방법

분류에서Dev

중첩 된 개체에서 상태를 설정하는 방법

분류에서Dev

TypeScript에서 개체에 중첩 된 개체를 반복하는 방법

분류에서Dev

TypeScript에서 개체에 중첩 된 개체를 반복하는 방법

분류에서Dev

중첩 된 개체 내에서 키를 바꾸는 방법

분류에서Dev

PHP에서 중첩 된 개체를 만드는 방법

분류에서Dev

jquery를 사용하여 중첩 된 JSON 개체에서 값을 가져 오는 방법은 무엇입니까?

분류에서Dev

iOS에서 배열 데이터 내부의 중첩 된 Json 개체를 구문 분석하는 방법

분류에서Dev

인코딩 된 JSON 개체에서 필드를 추출하는 방법

분류에서Dev

Delphi 10.1 Berlin에서 중첩 된 객체를 Json으로 변환하는 방법

분류에서Dev

Postgres에서 중첩 된 JSON의 객체를 쿼리하는 방법

분류에서Dev

ASP.Net Web API의 SQL 테이블에서 중첩 된 JSON 개체를 가져 오는 방법

분류에서Dev

PHP5에서 중첩 된 json 객체를 만드는 방법

분류에서Dev

Angular에서 중첩 된 개체를 하나씩 표시하는 방법

분류에서Dev

중첩 된 JSON 개체 속성을 검색하는 방법

분류에서Dev

중첩 된 개체에서 JSON4Scala 추출 값

분류에서Dev

PostgreSQL의 중첩 된 xml 개체에서 값을 추출하는 방법은 무엇입니까?

분류에서Dev

중첩 된 json 객체를 스프링 mvc에 저장하는 방법

분류에서Dev

Spark에 중첩 된 Json 객체를 구문 분석하는 방법

분류에서Dev

JavaScript의 Formdata에서 중첩 된 개체를 형성하는 방법

분류에서Dev

클래스 내에서 중첩 된 개체 함수를 분리하는 방법

분류에서Dev

목록에서 중첩 된 개체를 찾고 제거하는 방법

분류에서Dev

Ember에서 중첩 된 개체를 업데이트하는 방법

분류에서Dev

CosmosDB에서 중첩 된 개체 값을 쿼리하는 방법

분류에서Dev

중첩 된 개체 배열에서 $ lookup하는 방법

분류에서Dev

중첩 된 JSON을 SpringBoot에서 객체 모델에 매핑하는 방법

Related 관련 기사

  1. 1

    Android에서 중첩 된 JSON 개체를 처리하는 방법

  2. 2

    DataGrid C # WPF에 중첩 된 개체를 추가하는 방법

  3. 3

    Json Extractor를 사용하여 Jmeter의 중첩 된 Json에서 데이터를 추출하는 방법

  4. 4

    Python을 사용하여 웹 사이트에서 독립적으로 중첩 된 여러 JSON 개체 및 키를 추출하는 방법

  5. 5

    중첩 된 개체에서 상태를 설정하는 방법

  6. 6

    TypeScript에서 개체에 중첩 된 개체를 반복하는 방법

  7. 7

    TypeScript에서 개체에 중첩 된 개체를 반복하는 방법

  8. 8

    중첩 된 개체 내에서 키를 바꾸는 방법

  9. 9

    PHP에서 중첩 된 개체를 만드는 방법

  10. 10

    jquery를 사용하여 중첩 된 JSON 개체에서 값을 가져 오는 방법은 무엇입니까?

  11. 11

    iOS에서 배열 데이터 내부의 중첩 된 Json 개체를 구문 분석하는 방법

  12. 12

    인코딩 된 JSON 개체에서 필드를 추출하는 방법

  13. 13

    Delphi 10.1 Berlin에서 중첩 된 객체를 Json으로 변환하는 방법

  14. 14

    Postgres에서 중첩 된 JSON의 객체를 쿼리하는 방법

  15. 15

    ASP.Net Web API의 SQL 테이블에서 중첩 된 JSON 개체를 가져 오는 방법

  16. 16

    PHP5에서 중첩 된 json 객체를 만드는 방법

  17. 17

    Angular에서 중첩 된 개체를 하나씩 표시하는 방법

  18. 18

    중첩 된 JSON 개체 속성을 검색하는 방법

  19. 19

    중첩 된 개체에서 JSON4Scala 추출 값

  20. 20

    PostgreSQL의 중첩 된 xml 개체에서 값을 추출하는 방법은 무엇입니까?

  21. 21

    중첩 된 json 객체를 스프링 mvc에 저장하는 방법

  22. 22

    Spark에 중첩 된 Json 객체를 구문 분석하는 방법

  23. 23

    JavaScript의 Formdata에서 중첩 된 개체를 형성하는 방법

  24. 24

    클래스 내에서 중첩 된 개체 함수를 분리하는 방법

  25. 25

    목록에서 중첩 된 개체를 찾고 제거하는 방법

  26. 26

    Ember에서 중첩 된 개체를 업데이트하는 방법

  27. 27

    CosmosDB에서 중첩 된 개체 값을 쿼리하는 방법

  28. 28

    중첩 된 개체 배열에서 $ lookup하는 방법

  29. 29

    중첩 된 JSON을 SpringBoot에서 객체 모델에 매핑하는 방법

뜨겁다태그

보관