고급 Postgres JSON 질의 기법

NoSQL 입문

Jake Roach

Data Engineer

중첩 JSON 데이터 질의

SELECT
    parent_meta -> 'jobs' ->> 'P1' AS jobs_P1,
    parent_meta -> 'jobs' ->> 'P2' AS jobs_P2
FROM student;

$$

중첩 데이터 질의를 더 쉽게 하려면:

  • #>#>> 연산자
  • json_extract_pathjson_extract_path_text 함수
NoSQL 입문

#> 및 #>> 연산자

두 개의 테이블. 첫 번째는 문서 데이터, 두 번째는 해시 화살표와 해시 이중 화살표 연산자로 추출한 여러 필드를 보여 줌.

#> 연산자

  • 컬럼에 사용, 문자열 배열을 인수로 받음
  • 경로가 없으면 null 반환
  • #>>는 필드를 텍스트로 반환

$$

SELECT
    parent_meta #> '{jobs}' AS jobs,
    parent_meta #> '{jobs, P1}' AS jobs_P1,
    parent_meta #> '{jobs, income}' AS income,
    parent_meta #>> '{jobs, P2}' AS jobs_P2
FROM student;
NoSQL 입문

json_extract_path 및 json_extract_path_text

json_extract_path

  • 컬럼과 임의 개수의 필드 제공
  • 경로가 없으면 null 반환
  • json_extract_path_text

$$

SELECT
  json_extract_path(parent_meta, 'jobs') AS jobs,
  json_extract_path(parent_meta, 'jobs', 'P1') AS jobs_P1,
  json_extract_path(parent_meta, 'jobs', 'income') AS income,
  json_extract_path_text(parent_meta, 'jobs', 'P2') AS jobs_P2,
FROM student;

두 개의 테이블. 첫 번째는 문서 데이터, 두 번째는 json_extract_path와 json_extract_path_text 함수로 추출한 여러 필드를 보여 줌.

NoSQL 입문

복습

SELECT
    <column-name> #> '{<field-name>}' AS <alias>,
    <column-name> #> '{<field-name>, <field-name>}' AS <alias>,
    <column-name> #>> '{<field-name>, <field-name>}' AS <alias>
FROM <table-name>;
SELECT
  json_extract_path(<column-name>, '<field-name>') AS <alias>,
  json_extract_path(<column-name>, '<field-name>', '<field-name>') AS <alias>,
  json_extract_path_text(<column-name>, '<field-name>', '<field-name>') AS <alias>
FROM <table-name>;
NoSQL 입문

연습해 봅시다!

NoSQL 입문

Preparing Video For Download...