組み込み辞書を操作するための関数
以下の関数を機能させるためには、サーバー構成ですべての組み込み辞書を取得するためのパスとアドレスを指定する必要があります。辞書は、これらの関数のいずれかが最初に呼ばれた際に読み込まれます。参照リストが読み込めない場合、例外がスローされます。
そのため、このセクションに示された例は、最初に構成されていない限り、ClickHouse Fiddleおよびクイックリリースや本番展開でデフォルトで例外をスローします。
参照リストを作成する情報については、セクション "Dictionaries" を参照してください。
複数のジオベース
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
は辞書キーと呼ばれます。サフィックスのない辞書の場合、キーは空の文字列です。
すべての辞書はランタイム中に再読み込みされます(特定の秒数ごとに、builtin_dictionaries_reload_interval
構成パラメーターで定義された間隔、またはデフォルトで毎時1回)。ただし、使用可能な辞書のリストはサーバー起動時に一度だけ定義されます。
地域を操作するためのすべての関数には、末尾にオプションの引数があります – 辞書キーと呼ばれます。これはジオベースと呼ばれます。
例:
regionToName
地域IDとジオベースを受け取り、対応する言語で地域名の文字列を返します。指定されたIDの地域が存在しない場合、空の文字列を返します。
構文
パラメータ
id
— ジオベースの地域ID。 UInt32。geobase
— 辞書キー。 Multiple Geobases を参照。 String。オプション。
返される値
geobase
で指定された対応する言語の地域名。 String。- それ以外は空の文字列。
例
クエリ:
結果:
regionToCity
ジオベースの地域IDを受け取ります。この地域が都市または都市の一部である場合、適切な都市の地域IDを返します。それ以外の場合は、0を返します。
構文
パラメータ
id
— ジオベースの地域ID。 UInt32。geobase
— 辞書キー。 Multiple Geobases を参照。 String。オプション。
返される値
- 存在する場合、適切な都市の地域ID。 UInt32。
- 存在しない場合は0。
例
クエリ:
結果:
regionToArea
地域をエリアに変換します(ジオベースのタイプ5)。他のすべての点において、この関数は 'regionToCity' と同じです。
構文
パラメータ
id
— ジオベースの地域ID。 UInt32。geobase
— 辞書キー。 Multiple Geobases を参照。 String。オプション。
返される値
- 存在する場合、適切なエリアの地域ID。 UInt32。
- 存在しない場合は0。
例
クエリ:
結果:
regionToDistrict
地域を連邦地区に変換します(ジオベースのタイプ4)。他のすべての点において、この関数は 'regionToCity' と同じです。
構文
パラメータ
id
— ジオベースの地域ID。 UInt32。geobase
— 辞書キー。 Multiple Geobases を参照。 String。オプション。
返される値
- 存在する場合、適切な都市の地域ID。 UInt32。
- 存在しない場合は0。
例
クエリ:
結果:
regionToCountry
地域を国に変換します(ジオベースのタイプ3)。他のすべての点において、この関数は 'regionToCity' と同じです。
構文
パラメータ
id
— ジオベースの地域ID。 UInt32。geobase
— 辞書キー。 Multiple Geobases を参照。 String。オプション。
返される値
- 存在する場合、適切な国の地域ID。 UInt32。
- 存在しない場合は0。
例
クエリ:
結果:
regionToContinent
地域を大陸に変換します(ジオベースのタイプ1)。他のすべての点において、この関数は 'regionToCity' と同じです。
構文
パラメータ
id
— ジオベースの地域ID。 UInt32。geobase
— 辞書キー。 Multiple Geobases を参照。 String。オプション。
返される値
- 存在する場合、適切な大陸の地域ID。 UInt32。
- 存在しない場合は0。
例
クエリ:
結果:
regionToTopContinent
地域に対して階層内の最上位の大陸を見つけます。
構文
パラメータ
id
— ジオベースの地域ID。 UInt32。geobase
— 辞書キー。 Multiple Geobases を参照。 String。オプション。
返される値
- (地域の階層を上へ登るときの) 最上位の大陸の識別子。UInt32。
- 存在しない場合は0。
例
クエリ:
結果:
regionToPopulation
地域の人口を取得します。人口はジオベースに含まれるファイルに記録されている場合があります。セクション "Dictionaries" を参照してください。地域の人口が記録されていない場合、0を返します。ジオベースでは、人口は子地域のために記録されている場合がありますが、親地域のためには記録されていない場合があります。
構文
パラメータ
id
— ジオベースの地域ID。 UInt32。geobase
— 辞書キー。 Multiple Geobases を参照。 String。オプション。
返される値
- 地域の人口。 UInt32。
- 存在しない場合は0。
例
クエリ:
結果:
regionIn
lhs
地域がrhs
地域に属するかどうかをチェックします。属する場合は1、属さない場合は0を返します。
構文
パラメータ
lhs
— ジオベースの Lhs 地域ID。 UInt32。rhs
— ジオベースの Rhs 地域ID。 UInt32。geobase
— 辞書キー。 Multiple Geobases を参照。 String。オプション。
返される値
- 属する場合は1。 UInt8。
- 属さない場合は0。
実装の詳細
関係は反射的です - 任意の地域は自分自身に属します。
例
クエリ:
結果:
regionHierarchy
UInt32の数値 – ジオベースの地域IDを受け取り、渡された地域とすべての親を含む地域IDの配列を返します。
構文
パラメータ
id
— ジオベースの地域ID。 UInt32。geobase
— 辞書キー。 Multiple Geobases を参照。 String。オプション。
返される値
例
クエリ:
結果: