埋め込み辞書で作業するための関数
以下の関数が動作するためには、サーバー設定で埋め込み辞書を取得するためのパスとアドレスを指定する必要があります。これらの関数の最初の呼び出し時に辞書が読み込まれます。参照リストが読み込まれない場合、例外がスローされます。
そのため、このセクションに示されている例は、最初に設定されていない限り、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
— ジオベースからの地域ID。 UInt32。rhs
— ジオベースからの地域ID。 UInt32。geobase
— 辞書キー。 Multiple Geobasesを参照。 String。 オプションです。
返される値
- 属している場合は1。 UInt8。
- 属していない場合は0。
実装の詳細
この関係は反射的です – どんな地域も自分自身に属します。
例
クエリ:
結果:
regionHierarchy
UInt32数値(ジオベースからの地域ID)を受け取ります。渡された地域とその親全てのチェーンから成る地域IDの配列を返します。
構文
パラメータ
id
— ジオベースからの地域ID。 UInt32。geobase
— 辞書キー。 Multiple Geobasesを参照。 String。 オプションです。
返される値
例
クエリ:
結果: