몽고DB 데이터 저장
현재 몽고 DB에 아래와 같은 데이터가 저장되어 있습니다. KEY로는 reg_date, user_id, ids가 있으며, ids안에 다시 key:value 형태로 id와 score를 저장하고 있습니다.
{
"_id" : ObjectId("abcdefg"),
"reg_date" : "2023-05-07",
"user_id" : "foo",
"ids" : [
{
"id" : "boo",
"score" : "100.0"
},
{
"id" : "boo1",
"score : "80.0"
}
]
}
트리노 몽고DB 조회
트리노에서 위의 몽고 데이터를 조회하게 되면 아래와 같이 나옵니다.
reg_date | user_id | ids |
2023-05-07 | foo | {{id=boo, score=100.0},{id=boo1, score = 80.0}} |
문제
앞서 말씀 드린 것과 같이 ids안에는 각각의 id와 score가 key:value형태로 저장되어있습니다.
이번 포스팅에서는 json형태의 ids안에 key를 각 컬럼 value를 row로 변경해보려 합니다.
reg_date | user_id | ids |
2023-05-07 | foo | {{id=boo, score=100.0},{id=boo1, score = 80.0}} |
▼
reg_date | user_id | id | score |
2023-05-07 | foo | boo | 100.0 |
2023-05-07 | foo | boo1 | 80.0 |
해결
아래와 같이 unnest, cross join을 통해 간단하게 추출할 수 있습니다.
select a.reg_date, a.user_id ,id ,score
from mongo.db.table a
cross join unnest(ids) as x(id,score)
where reg_date '2023-05-07'
and user_id ='foo'
'데이터엔지니어 > etc' 카테고리의 다른 글
[크롤링] WebDriverException: Message: 'chromedriver.exe' executable needs to be in PATH. (2) | 2023.08.04 |
---|---|
WSL 에 운영체제 설치하기 (0) | 2022.12.15 |
WLS에 설치된 운영체제 삭제하기 (0) | 2022.12.15 |
[리뷰] 금융 전략을 위한 머신러닝 (Machine Learning and Data Science Blueprints for Finance) (0) | 2022.02.23 |
[mac m1] Visual Studio Code에 anaconda 가상환경 연결 (0) | 2021.08.14 |