Skip to main content
Sensor.Community는 공개 환경 데이터(Open Environmental Data)를 생성하는, 커뮤니티 참여자들이 주도하는 글로벌 센서 네트워크입니다. 데이터는 전 세계 센서에서 수집됩니다. 누구나 센서를 구매해 원하는 곳에 설치할 수 있습니다. 데이터를 다운로드하기 위한 API는 GitHub에 있으며, 데이터는 Database Contents License (DbCL)에 따라 자유롭게 사용할 수 있습니다.
이 데이터셋에는 200억 개가 넘는 레코드가 있으므로, 리소스가 이 정도 규모를 처리할 수 없다면 아래 명령을 그대로 복사해 붙여 넣지 않도록 주의하십시오. 이 명령은 적절한 규모의 ClickHouse Cloud 서비스에서 실행되었습니다.
이 명령을 직접 실행해 보려면 무료 ClickHouse Cloud 체험판에 가입하거나 자체 호스팅 ClickHouse를 설정하세요.
  1. 데이터는 S3에 있으므로 s3 테이블 함수를 사용해 파일에서 테이블을 생성할 수 있습니다. 원본 위치에서 바로 쿼리할 수도 있습니다. ClickHouse에 삽입하기 전에 몇 개의 행을 먼저 살펴보겠습니다:
데이터는 CSV 파일에 저장되어 있지만 구분자로 세미콜론을 사용합니다. 행은 다음과 같습니다:
  1. ClickHouse에 데이터를 저장하기 위해 다음 MergeTree 테이블을 사용합니다:
  1. s3Cluster 테이블 함수를 사용하겠습니다. 이 함수는 S3 파일을 클러스터의 노드에 분산해 병렬로 읽습니다. ClickHouse Cloud에서는 클러스터 이름이 default이므로 아래와 같이 실행할 수 있습니다. 자가 관리형 서버에서는 default를 클러스터 이름으로 바꾸십시오. 단일 서버를 실행 중이라면 대신 s3 테이블 함수를 사용하고 첫 번째 인수를 제거해 함수 호출이 URL로 시작하도록 하십시오.
이 쿼리는 시간이 다소 걸릴 수 있습니다. 비압축 데이터 기준으로 약 1.67T입니다:
다음은 행 수와 처리 속도를 보여주는 응답입니다. 초당 600만 행이 넘는 속도로 입력되고 있습니다!
  1. sensors 테이블(table)에 필요한 디스크 저장 공간이 얼마나 되는지 살펴보겠습니다:
1.67T는 310 GiB로 압축되었으며, 총 206억 9,000만 행이 있습니다:
  1. 이제 데이터가 ClickHouse에 있으므로 분석해 보겠습니다. 더 많은 센서가 배포됨에 따라 시간이 지날수록 데이터 양이 증가하는 것을 확인할 수 있습니다:
SQL 콘솔에서 차트를 생성해 결과를 시각화할 수 있습니다:
  1. 이 쿼리는 매우 덥고 습한 날의 수를 계산합니다:
결과를 시각화하면 다음과 같습니다: