데이터셋
데이터 탐색
clickhouse-local을 사용하겠습니다.
물론 ClickHouse Cloud, clickhouse-client, 또는 chDB를 사용할 수도 있습니다.
데이터가 저장된 S3 버킷에서 데이터를 조회하려면 다음 쿼리를 실행하세요:
Query
Response
ᴺᵁᴸᴸ이므로, 좀 더 유용한 데이터를 반환하도록
쿼리에 몇 가지 조건을 추가할 수 있습니다:
Query
DESCRIBE로 데이터에서 자동 추론된 스키마를 확인하세요:
Query
Response
ClickHouse에 데이터 로드하기
clickhouse-server
또는 ClickHouse Cloud를 사용할 수 있습니다.
테이블을 생성하려면 다음 명령을 실행하세요:
Query
LowCardinality 데이터 타입이 여러 컬럼에 사용된 점에 주목하십시오. 이렇게 하면
데이터 타입의 내부 표현이 딕셔너리 인코딩 방식으로 바뀝니다. 딕셔너리 인코딩된 데이터로 작업하면
많은 애플리케이션에서 SELECT 쿼리 성능이 크게 향상됩니다.
또한, 지도를 타일로 더 쉽게 분할할 수 있도록 lat/lon 좌표를 Web Mercator projection에 매핑하는
두 개의 UInt32 MATERIALIZED 컬럼인 mercator_x와 mercator_y를 생성합니다:
longitude + 180은 경도 범위를 [-180, 180]에서 [0, 360]으로 이동시킵니다- 360으로 나누면 값을 0과 1 사이로 정규화합니다
0xFFFFFFFF(32비트 부호 없는 최대 정수의 16진수 표현)를 곱하면 이 정규화된 값을 32비트 정수의 전체 범위로 확장합니다
latitude + 90은 위도 범위를 [-90, 90]에서 [0, 180]으로 이동시킵니다- 360으로 나눈 뒤 pi()를 곱하면 삼각 함수에 사용할 라디안으로 변환됩니다
log(tan(...))부분은 메르카토르 도법 공식의 핵심입니다0xFFFFFFFF를 곱하면 32비트 정수의 전체 범위로 확장합니다
MATERIALIZED를 지정하면 ClickHouse가 데이터를 INSERT할 때 이러한
컬럼의 값을 계산하므로, 원본 데이터 스키마에 포함되지 않은 이 컬럼들을
INSERT statement에서 별도로 지정할 필요가 없습니다.
테이블은 mortonEncode(mercator_x, mercator_y)를 기준으로 정렬되며, 이는
지리공간 쿼리 성능을 크게 향상시키기 위해 mercator_x, mercator_y에 대한
Z-order 공간 충전 곡선을 생성합니다. 이 Z-order 곡선 정렬은 데이터가
공간적 인접성을 기준으로 물리적으로 구성되도록 합니다:
minmax 인덱스 2개도 생성됩니다: