임베디드 사전 함수
임베디드 사전 함수 (Functions for Working with Embedded Dictionaries)
지리 정보(지역 계층)가 담긴 임베디드 사전을 다루는 함수 모음이에요. 지역 ID를 이름, 도시, 국가, 대륙 등으로 변환하거나 인구, 소속 관계를 확인해요.
출처: 문서
본문
아래 함수들이 동작하려면 서버 구성에서 모든 임베디드 사전을 가져올 경로와 주소를 지정해야 해요. 사전은 이 함수 중 어느 하나가 처음 호출될 때 로드돼요. 참조 목록을 로드할 수 없으면 예외가 발생해요. 따라서 이 섹션의 예제는 기본적으로 구성을 먼저 하지 않는 한 ClickHouse Fiddle과 빠른 릴리스 및 프로덕션 배포에서 예외를 발생시킬 거예요.
참조 목록 생성에 관한 정보는 "Dictionaries" 섹션을 참고하세요.
여러 지오베이스 (Multiple Geobases)
ClickHouse는 특정 지역이 어떤 국가에 속하는지에 대한 다양한 관점을 지원하기 위해 여러 대체 지오베이스(지역 계층)를 동시에 사용하는 것을 지원해요. 'clickhouse-server' 구성은 지역 계층이 있는 파일을 지정해요: <path_to_regions_hierarchy_file>/opt/geo/regions_hierarchy.txt</path_to_regions_hierarchy_file> 이 파일 외에도 이름에 _ 기호와 어떤 접미사가(파일 확장자 앞에) 붙은 인근 파일도 검색해요. 예를 들어 /opt/geo/regions_hierarchy_ua.txt 파일이 있으면 그것도 찾아요. 여기서 ua를 사전 키(dictionary key)라고 불러요. 접미사가 없는 사전의 키는 빈 문자열이에요. 모든 사전은 런타임 중에 다시 로드돼요(구성 매개변수 builtin_dictionaries_reload_interval에 정의된 대로 특정 초마다, 기본적으로 1시간마다). 그러나 사용 가능한 사전 목록은 서버 시작 시 한 번 정의돼요. 지역 작업을 위한 모든 함수는 끝에 선택 사항 인자 — 사전 키를 가져요. 이를 지오베이스라고 불러요. 예:
regionToCountry(RegionID) – Uses the default dictionary: /opt/geo/regions_hierarchy.txt
regionToCountry(RegionID, '') – Uses the default dictionary: /opt/geo/regions_hierarchy.txt
regionToCountry(RegionID, 'ua') – Uses the dictionary for the 'ua' key: /opt/geo/regions_hierarchy_ua.txt
regionToName
지역 ID와 지오베이스를 받아 해당 언어로 된 지역 이름 문자열을 반환해요. 지정된 ID의 지역이 없으면 빈 문자열을 반환해요.
구문 (Syntax)
regionToName(id[, lang])
매개변수 (Parameters)
반환 값 (Returned value)
geobase로 지정된 해당 언어의 지역 이름. String.- 그 외에는 빈 문자열.
예제 (Example)
쿼리:
SELECT regionToName(number::UInt32,'en') FROM numbers(0,5);
응답:
┌─regionToName(CAST(number, 'UInt32'), 'en')─┐
│ │
│ World │
│ USA │
│ Colorado │
│ Boulder County │
└────────────────────────────────────────────┘
regionToCity
지오베이스의 지역 ID를 받아요. 이 지역이 도시이거나 도시의 일부이면 적절한 도시의 지역 ID를 반환해요. 그 외에는 0을 반환해요.
구문 (Syntax)
regionToCity(id [, geobase])
반환 값 (Returned value)
- 적절한 도시의 지역 ID(존재하는 경우). UInt32.
- 없는 경우 0.
regionToArea
지역을 구역(지오베이스에서 타입 5)으로 변환해요. 그 외에는 'regionToCity'와 같아요.
구문 (Syntax)
regionToArea(id [, geobase])
반환 값 (Returned value)
- 적절한 구역의 지역 ID(존재하는 경우). UInt32.
- 없는 경우 0.
regionToDistrict
지역을 연방 구역(지오베이스에서 타입 4)으로 변환해요. 그 외에는 'regionToCity'와 같아요.
구문 (Syntax)
regionToDistrict(id [, geobase])
반환 값 (Returned value)
- 적절한 도시의 지역 ID(존재하는 경우). UInt32.
- 없는 경우 0.
regionToCountry
지역을 국가(지오베이스에서 타입 3)로 변환해요. 그 외에는 'regionToCity'와 같아요.
구문 (Syntax)
regionToCountry(id [, geobase])
반환 값 (Returned value)
- 적절한 국가의 지역 ID(존재하는 경우). UInt32.
- 없는 경우 0.
regionToContinent
지역을 대륙(지오베이스에서 타입 1)으로 변환해요. 그 외에는 'regionToCity'와 같아요.
구문 (Syntax)
regionToContinent(id [, geobase])
반환 값 (Returned value)
- 적절한 대륙의 지역 ID(존재하는 경우). UInt32.
- 없는 경우 0.
regionToTopContinent
지역의 계층에서 가장 높은 대륙을 찾아요.
구문 (Syntax)
regionToTopContinent(id[, geobase])
반환 값 (Returned value)
- 최상위 대륙의 식별자(지역 계층을 올라갈 때의 마지막 것). UInt32.
- 없는 경우 0.
regionToPopulation
지역의 인구를 가져와요. 인구는 지오베이스가 있는 파일에 기록될 수 있어요. "Dictionaries" 섹션을 참고하세요. 지역에 인구가 기록되어 있지 않으면 0을 반환해요. 지오베이스에서 인구는 자식 지역에는 기록될 수 있지만 부모 지역에는 기록되지 않을 수 있어요.
구문 (Syntax)
regionToPopulation(id[, geobase])
반환 값 (Returned value)
- 지역의 인구. UInt32.
- 없는 경우 0.
regionIn
lhs 지역이 rhs 지역에 속하는지 확인해요. 속하면 1, 속하지 않으면 0인 UInt8 숫자를 반환해요.
구문 (Syntax)
regionIn(lhs, rhs[, geobase])
매개변수 (Parameters)
반환 값 (Returned value)
- 속하면 1. UInt8.
- 속하지 않으면 0.
구현 세부 사항 관계는 반사적이에요 — 어떤 지역도 그 자체에 속해요.
regionHierarchy
UInt32 숫자 — 지오베이스의 지역 ID를 받아요. 전달된 지역과 체인을 따라 모든 부모로 구성된 지역 ID 배열을 반환해요.
구문 (Syntax)
regionHierarchy(id[, geobase])
반환 값 (Returned value)
예제 (Example)
쿼리:
SELECT regionHierarchy(number::UInt32) AS arr, arrayMap(id -> regionToName(id, 'en'), arr) FROM numbers(5);
응답:
┌─arr────────────┬─arrayMap(...)─┐
│ [] │ [] │
│ [1] │ ['World'] │
│ [2,10,9,1] │ ['USA','North America','America','World'] │
│ [3,2,10,9,1] │ ['Colorado','USA','North America','America','World'] │
│ [4,3,2,10,9,1] │ ['Boulder County','Colorado','USA','North America','America','World'] │
└────────────────┴───────────────┘