메인 콘텐츠로 건너뛰기

질문

JSON 배열은 어떻게 가져오고 내부 객체는 어떻게 쿼리합니까?

답변

이 한 줄짜리 JSON 배열을 sample.json에 저장하세요
데이터를 확인하세요:
JSON 행을 받을 테이블을 생성합니다:
데이터를 삽입하세요:
JSON 객체 유형에서 데이터 추론이 어떻게 동작했는지 확인하세요:
Events는 각각 eventType String 필드와 time String 필드를 포함하는 Tuple배열입니다. 후자의 유형은 적절하지 않습니다(DateTime이 더 적합합니다). 데이터를 살펴보겠습니다:
몇 개의 쿼리를 실행해 보겠습니다: eventType 값이 close인 이벤트의 _idchannel
time을 기준으로 쿼리하고 싶습니다. 예를 들어 지정한 시간 범위의 모든 이벤트를 조회하려고 하는데, String으로 가져온 것을 확인할 수 있습니다:
따라서 이를 날짜로 처리하려면 먼저 DateTime으로 변환합니다. 배열을 변환할 때는 map 함수를 사용합니다:
두 배열에 toTypeName을 적용하면 차이점을 확인할 수 있습니다:
이제 주어진 인터벌 내에 time이 있는 행들의 id를 가져오겠습니다. arrayCount를 사용해 map 함수가 반환한 배열의 항목 중 x BETWEEN toDateTime('2021-06-18 11:46:00', 'Europe/Rome') AND toDateTime('2021-06-18 11:50:00', 'Europe/Rome') 조건과 일치하는 항목 수가 0보다 큰지 확인합니다.
⚠️ 이 글을 작성한 시점 기준으로 현재 JSON 구현은 실험적 기능이며, 프로덕션 환경에는 적합하지 않다는 점을 유의하십시오. 이 예시는 JSON을 빠르게 가져와 쿼리를 시작하는 방법을 보여줍니다. 또한 스키마 타입을 사전에 지정할 필요 없이 JSON 객체를 JSON 타입으로 가져오는 사용 편의성과의 절충점을 보여줍니다. 빠른 테스트에는 편리하지만, 데이터를 장기적으로 활용하려면 이 예시에서도 데이터를 가장 적절한 타입으로 저장하는 것이 좋습니다. 따라서 위에서 설명한 것처럼 수집 후 단계에서의 변환을 피하려면 time 필드에는 String 대신 DateTime을 사용하십시오. JSON 처리에 대한 자세한 내용은 documentation을 참조하십시오.
마지막 수정일 2026년 7월 3일