辞書を扱う関数
DDL クエリで作成された辞書の場合、dict_name パラメーターは <database>.<dict_name> のように完全修飾名で指定する必要があります。省略した場合は、現在のデータベースが使用されます。
辞書の接続と設定の方法については、辞書を参照してください。
dictGet、dictGetOrDefault、dictGetOrNull
ディクショナリから値を取得します。
引数
dict_name— 辞書の名前。文字列リテラル。attr_names— 辞書の列名を指定する String literal、または列名のタプルを指定する Tuple(String literal)。id_expr— キーの値。ディクショナリの設定に応じて、ディクショナリのキー型の値または Tuple 型の値を返す Expression です。default_value_expr— 辞書にid_exprキーを持つ行が存在しない場合に返される値。Expression または Tuple(Expression) であり、attr_names属性に対して設定されたデータ型で値(または複数の値)を返します。
返り値
-
ClickHouse が 属性のデータ型 に従って属性を正常にパースできた場合、関数は
id_exprに対応する辞書の属性の値を返します。 -
辞書に
id_exprに対応するキーが存在しない場合は、次のようになります。dictGetは、辞書の設定で対象の属性に対して指定された<null_value>要素の内容を返します。dictGetOrDefaultは、default_value_exprパラメータとして渡された値を返します。dictGetOrNullは、キーが辞書内で見つからなかった場合にNULLを返します。
ClickHouseは、属性値を解析できない場合、または属性値がデータ型と一致しない場合に例外をスローします。
シンプルキーディクショナリの例
以下の内容を含むテキストファイル ext-dict-test.csv を作成します:
最初の列は id、2番目の列は c1 です。
ディクショナリを設定する:
クエリを実行してください:
複合キーディクショナリの例
以下の内容を含むテキストファイル ext-dict-mult.csv を作成します:
最初の列は id、2番目は c1、3番目は c2 です。
ディクショナリを設定する:
クエリを実行してください:
範囲キー辞書の例
入力テーブル:
辞書を作成します。
次のクエリを実行します:
結果:
関連項目
dictHas
辞書内に指定したキーが存在するかどうかを確認します。
引数
戻り値
dictGetHierarchy
階層型ディクショナリ内のキーについて、そのすべての親要素を含む配列を作成します。
構文
引数
dict_name— 辞書名。String literal。key— キー値。Expression で、UInt64 型の値を返します。
戻り値
- キーに対応する親の配列。Array(UInt64)。
dictIsIn
辞書内の階層構造全体をたどって、キーの先祖を確認します。
引数
dict_name— 辞書の名前。String literal。child_id_expr— チェック対象となるキー。Expression で、UInt64 型の値を返します。ancestor_id_expr—child_id_exprキーの想定される祖先キー。Expression で、UInt64 型の値を返します。
戻り値
child_id_exprがancestor_id_exprの子でない場合は 0。UInt8。child_id_exprがancestor_id_exprの子である場合、またはchild_id_exprがancestor_id_expr自身である場合は 1。UInt8。
dictGetChildren
直下の子要素をインデックスの配列として返します。これは dictGetHierarchy の逆変換です。
構文
引数
戻り値
例
次の階層型辞書を考えます。
第1レベルの子要素:
dictGetDescendant
dictGetChildren 関数を level 回にわたって再帰的に適用した場合と同様に、すべての子孫を返します。
構文
引数
dict_name— 辞書名。文字列リテラル。key— キーの値。式で、UInt64 型の値を返します。level— 階層レベル。level = 0の場合は、末端までのすべての子孫を返します。UInt8。
戻り値
例
次のような階層型辞書を考えます:
すべての子孫:
第1階層の子要素:
dictGetAll
正規表現ツリーディクショナリの各キーにマッチしたすべてのノードの属性値を取得します。
T ではなく Array(T) 型の値を返すことを除けば、この関数の動作は dictGet と同様です。
構文
引数
dict_name— 辞書の名前。String literal。attr_names— 辞書のカラム名を表す String literal、またはカラム名のタプルを表す Tuple(String literal)。id_expr— キー値。Expression で、辞書の設定に応じて、辞書のキー型の値の配列、または Tuple 型の値を返します。limit- 返される各値配列の最大長。切り詰める際は、親ノードより子ノードが優先され、それ以外の場合は regexp tree dictionary に定義されたリスト順が尊重されます。指定されていない場合、配列長は無制限です。
戻り値
-
ClickHouse が、辞書で定義された属性のデータ型として属性を正常にパースできた場合、
attr_namesで指定された各属性について、id_exprに対応する辞書属性値の配列を返します。 -
id_exprに対応するキーが辞書内に存在しない場合、空の配列が返されます。
ClickHouse は、属性の値をパースできない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
次の regexp tree dictionary を想定します:
一致するすべての値を取得:
一致する値を最大 2 件取得:
dictGetKeys
指定した値に等しい属性値を持つ辞書キーを返します。これは、単一の属性に対する dictGet の逆操作です。
構文
引数
dict_name— 辞書の名前。String literal。attr_name— 辞書の属性列の名前。String literal。value_expr— 属性と照合する値。属性のデータ型に変換可能な Expression です。
返り値
-
単一キー辞書の場合: 属性が
value_exprと等しいキーの配列。Array(T)。ここでTは辞書キーのデータ型です。 -
複合キー辞書の場合: 属性が
value_exprと等しいキーのタプルの配列。Array(Tuple(T1, T2, ...)) であり、各Tupleには辞書キーの列が順番に含まれます。 -
value_exprに対応する属性が辞書内に存在しない場合は、空の配列が返されます。
ClickHouse は、属性の値を解釈できない場合、またはその値を属性のデータ型に変換できない場合に例外をスローします。
例
次の辞書を例にします:
次に、レベルが high のすべての ID を取得してみましょう:
max_reverse_dictionary_lookup_cache_size_bytes 設定を使用して、dictGetKeys が使用するクエリごとの逆引きキャッシュの最大サイズを制限します。キャッシュには、同じクエリ内で辞書を再スキャンしないように、各属性値に対応するシリアライズ済みキーのタプルが保存されます。キャッシュはクエリ間では永続化されません。上限に達すると、エントリは LRU 方式で削除されます。これは、入力のカーディナリティが低く、ワーキングセットがキャッシュに収まる大規模な辞書で最も効果的です。キャッシュを無効にするには 0 を設定します。
さらに、attr_name 列のユニーク値がキャッシュに収まる場合、多くのケースで、関数の実行コストは入力行数に対して線形となり、そこに少数回分の辞書スキャンが加わる程度になります。
その他の関数
ClickHouse は、辞書の設定に依存せず、辞書属性の値を特定のデータ型に変換するための特殊な関数をサポートしています。
関数:
dictGetInt8,dictGetInt16,dictGetInt32,dictGetInt64dictGetUInt8,dictGetUInt16,dictGetUInt32,dictGetUInt64dictGetFloat32,dictGetFloat64dictGetDatedictGetDateTimedictGetUUIDdictGetStringdictGetIPv4,dictGetIPv6
これらすべての関数には、OrDefault という修飾子付きのバリアントがあります。例えば、dictGetDateOrDefault です。
構文:
引数
dict_name— 辞書の名前。String literal。attr_name— 辞書の列名。String literal。id_expr— キーの値。辞書の設定に応じて、UInt64 または Tuple 型の値を返す Expression。default_value_expr— 辞書にid_exprキーを持つ行が存在しない場合に返される値。attr_name属性に設定されているデータ型の値を返す Expression。
戻り値
-
ClickHouse が 属性のデータ型 で属性を正常に解析できた場合、関数は
id_exprに対応する辞書属性の値を返します。 -
辞書に要求された
id_exprが存在しない場合は、次のとおりです。dictGet[Type]は、辞書の設定でその属性に対して指定された<null_value>要素の内容を返します。dictGet[Type]OrDefaultは、default_value_exprパラメータとして渡された値を返します。
ClickHouse は、属性の値を解析できない場合、または値が属性のデータ型と一致しない場合に例外を送出します。
例となる辞書
このセクションの例では、次の辞書を使用します。以下で説明する関数の例を実行するには、これらを ClickHouse で作成してください。
dictGet<T> および dictGet<T>OrDefault 関数用の例となる辞書
dictGetAll 用の例となる辞書
regexp ツリー辞書用のデータを保存するテーブルを作成します:
テーブルにデータを挿入します:
regexp ツリー辞書を作成します:
範囲キー Dictionary の例
入力テーブルを作成します:
データを入力テーブルに挿入します:
Dictionary を作成します:
複合キー Dictionary の例
ソーステーブルを作成します:
データをソーステーブルに挿入します:
Dictionary を作成します:
階層型 Dictionary の例
ソーステーブルを作成します:
データをソーステーブルに挿入します:
Dictionary を作成します:
dictGet
導入バージョン: v18.16
Dictionary から値を取得します。
構文
引数
dict_name— Dictionary の名前。Stringattr_names— Dictionary のカラム名、またはカラム名のタプル。StringまたはTuple(String)id_expr— キーの値。UInt64またはTuple(T)を返す式。UInt64またはTuple(T)
戻り値
キーが見つかった場合、id_expr に対応する Dictionary の属性値を返します。
キーが見つからない場合、その属性に対して Dictionary の設定で指定された <null_value> 要素の内容を返します。
例
単一の属性を取得する
複数の属性
dictGetAll
導入バージョン: v23.5
Dictionary の設定に関わらず、属性値を All データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返します。
対応するものが存在しない場合は、Dictionary 設定でその属性に対して指定されている <null_value> 要素の内容を返します。
ClickHouse は、属性の値を解析できない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetChildren
導入バージョン: v21.4
第1階層の子をインデックスの配列として返します。これは dictGetHierarchy の逆変換です。
構文
引数
dict_name— Dictionary の名前。Stringkey— 確認対象のキー。const String
戻り値
指定したキーに対する第 1 階層(直下)の子要素を返します。Array(UInt64)
例
Dictionary の第 1 階層(直下)の子要素を取得する
dictGetDate
導入バージョン: v1.1
Dictionary の属性値を、Dictionary の設定に関係なく Date データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値(Dictionary の設定に依存)を返す式。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
それ以外の場合は、その属性について Dictionary 設定で指定された <null_value> 要素の内容を返します。
ClickHouse は、属性の値を解析できない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetDateOrDefault
導入バージョン: v1.1
Dictionary の設定に関係なく、属性値を Date データ型に変換するか、キーが見つからない場合は指定されたデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary の属性(カラム)の名前。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定に依存します)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーの行が存在しない場合に返される値。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
存在しない場合は default_value_expr パラメータで渡された値を返します。
ClickHouse は、属性の値をパースできない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetDateTime
導入バージョン: v1.1
Dictionary の設定に依存せず、Dictionary 属性の値を DateTime データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の構成に依存)。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返します。
それ以外の場合は、Dictionary の構成でその属性に対して指定されている <null_value> 要素の内容を返します。
属性の値を解析できない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外を送出します。
例
使用例
dictGetDateTimeOrDefault
導入: v1.1
Dictionary の属性値を、Dictionary の設定に関係なく DateTime データ型に変換します。キーが見つからない場合は、指定されたデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定に依存します)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーの行が存在しない場合に返される値(複数可)。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
存在しない場合は default_value_expr パラメータとして渡された値を返します。
属性の値をパースできない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外を送出します。
例
使用例
dictGetDescendants
導入バージョン: v21.4
dictGetChildren 関数を level 回再帰的に適用した場合と同様に、すべての子孫を返します。
構文
引数
dict_name— Dictionary の名前。Stringkey— チェック対象のキー。const Stringlevel— 階層レベル。level = 0の場合、末端までのすべての子孫を返します。UInt8
返り値
指定されたキーに対する子孫を返します。Array(UInt64)
例
Dictionary の第 1 階層の子要素を取得する
dictGetFloat32
導入バージョン: v1.1
Dictionary の属性値を、Dictionary 設定に関係なく Float32 型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary の設定に応じて、Dictionary のキー型の値またはタプル値を返す式。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返します。
対応する値が存在しない場合は、Dictionary 設定でその属性に対して指定された <null_value> 要素の内容を返します。
属性の値を解析できない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外をスローします。
例
使用例
dictGetFloat32OrDefault
導入バージョン: v1.1
Dictionary の属性値を、Dictionary の設定に関係なく Float32 データ型に変換するか、キーが見つからない場合は指定されたデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary で定義されたキー型の値、またはタプル値を返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーの行が存在しない場合に返される値。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返します。
存在しない場合は、default_value_expr パラメータで渡された値を返します。
ClickHouse は、属性の値を解析できない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetFloat64
導入されたバージョン: v1.1
Dictionary の設定に関係なく、Dictionary の属性値を Float64 データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キーの値。Dictionary のキー型の値またはタプル値を返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)
返り値
id_expr に対応する Dictionary 属性の値を返し、
それ以外の場合は、Dictionary 設定でその属性に対して指定された <null_value> 要素の内容を返します。
属性の値をパースできない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外をスローします。
例
使用例
dictGetFloat64OrDefault
導入バージョン: v1.1
Dictionary の属性値を、Dictionary の設定に関係なく Float64 データ型に変換します。キーが見つからない場合は、指定したデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が存在しない場合に返される値(または複数の値)。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
存在しない場合は default_value_expr パラメータで渡された値を返します。
ClickHouse は、属性の値をパースできない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetHierarchy
導入されたバージョン: v1.1
階層型 Dictionary 内のキーについて、そのすべての親を含む配列を生成します。
構文
引数
dict_name— Dictionary の名前。Stringkey— キー値。const String
戻り値
指定したキーに対応する親を返します。Array(UInt64)
例
キーに対する階層を取得する
dictGetIPv4
導入バージョン: v1.1
Dictionary の設定に関係なく、その属性値を IPv4 データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キーの値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返します。
対応する値がない場合は、Dictionary の設定でその属性に指定された <null_value> 要素の内容を返します。
ClickHouse は、属性の値を解析できない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetIPv4OrDefault
導入バージョン: v23.1
Dictionary の設定に関係なく、Dictionary の属性の値を IPv4 データ型に変換し、キーが見つからない場合は指定されたデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キーの値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が存在しない場合に返される値(複数可)。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
存在しない場合は default_value_expr パラメータとして渡された値を返します。
属性の値をパースできない場合、またはその値が属性のデータ型と一致しない場合、ClickHouse は例外をスローします。
例
使用例
dictGetIPv6
導入: v23.1
Dictionary の設定にかかわらず、属性値を IPv6 データ型として取得します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値(Dictionary の設定に依存)を返す式。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary の属性値を返します。
対応する値がない場合は、Dictionary 設定でその属性に対して指定された <null_value> 要素の内容を返します。
属性の値を解析できない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外をスローします。
例
使用例
dictGetIPv6OrDefault
導入バージョン: v23.1
Dictionary の属性値を、Dictionary の設定に関係なく IPv6 データ型に変換するか、キーが見つからない場合には指定されたデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の構成に依存)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が存在しない場合に返される値(複数可)。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
それ以外の場合は default_value_expr パラメータとして渡された値を返します。
属性の値をパースできない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外をスローします。
例
使用例
dictGetInt16
導入バージョン: v1.1
Dictionary の属性値を、Dictionary の設定に関係なく Int16 データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値(Dictionary の設定内容に依存)を返す式。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返します。
それ以外の場合は、Dictionary の設定でその属性に対して指定された <null_value> 要素の内容を返します。
属性の値をパースできない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外を発生させます。
例
使用例
dictGetInt16OrDefault
導入バージョン: v1.1
Dictionary の設定にかかわらず属性値を Int16 型として取得し、キーが見つからない場合は指定したデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キーの値。Dictionary で定義されたキー型の値、またはタプル値を返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が存在しない場合に返される値(複数の場合あり)。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary の属性値を返し、
存在しない場合は default_value_expr パラメータで渡された値を返します。
ClickHouse は、属性値を解析できない場合、またはその値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetInt32
導入バージョン:v1.1
Dictionary の設定に関係なく、その属性値を Int32 データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キーの値。Dictionary のキー型の値、またはタプル値(Dictionary の設定に依存)を返す式。ExpressionまたはTuple(T)
返り値
id_expr に対応する Dictionary の属性値を返します。
対応する値がない場合は、その属性について Dictionary の設定で指定された <null_value> 要素の内容を返します。
属性値を解析できない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外をスローします。
例
使用例
dictGetInt32OrDefault
導入バージョン: v1.1
Dictionary の属性値を、Dictionary の設定に関係なく Int32 データ型に変換します。キーが見つからない場合は、指定されたデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キーの値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が含まれていない場合に返される値。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary の属性の値を返します。
対応する値が存在しない場合は、default_value_expr パラメーターとして渡された値を返します。
属性の値を解析できない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外をスローします。
例
使用例
dictGetInt64
導入: v1.1
Dictionary の設定に関係なく、Dictionary の属性の値を Int64 データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、または(Dictionary の設定に依存して)値のタプルを返す式。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返します。
対応する値が存在しない場合は、Dictionary 設定でその属性に指定された <null_value> 要素の内容を返します。
ClickHouse は、属性の値を解釈できない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetInt64OrDefault
導入バージョン: v1.1
Dictionary の属性値を、Dictionary の設定に関係なく Int64 データ型に変換するか、キーが見つからない場合は指定されたデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定による)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が存在しない場合に返される値。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary の属性値を返し、
該当しない場合は default_value_expr パラメータで渡された値を返します。
ClickHouse は、属性値を解析できない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetInt8
導入バージョン: v1.1
Dictionary の設定に関係なく、Dictionary の属性値を Int8 データ型に変換して返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キーの値。Dictionary のキー型の値、または値のタプルを返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返します。
対応する値が存在しない場合は、Dictionary の設定でその属性に対して指定された <null_value> 要素の内容を返します。
ClickHouse は、属性の値をパースできない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetInt8OrDefault
v1.1 で導入
Dictionary の設定に関係なく、Dictionary の属性値を Int8 データ型に変換し、キーが見つからない場合は指定したデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が存在しない場合に返される値。ExpressionまたはTuple(T)
返される値
id_expr に対応する Dictionary 属性の値を返し、
それ以外の場合には default_value_expr パラメータとして渡された値を返します。
属性の値をパースできない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外をスローします。
例
使用例
dictGetKeys
導入バージョン: v25.12
指定された値と等しい属性を持つ Dictionary のキーを返します。これは、単一の属性に対する dictGet 関数の逆の動作です。
dictGetKeys が使用するクエリごとの逆引きキャッシュのサイズ上限を設定するには、max_reverse_dictionary_lookup_cache_size_bytes を使用します。
このキャッシュは、同じクエリ内で Dictionary を再スキャンする必要がないように、各属性値に対応するシリアライズ済みのキーのタプルを保存します。
このキャッシュはクエリ間で永続化されません。上限に達すると、LRU によってエントリが削除されます。
入力のカーディナリティが低く、ワーキングセットがキャッシュに収まるような大きな Dictionary に対して最も効果的です。キャッシュを無効にするには 0 を設定します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— 照合する属性名。Stringvalue_expr— 属性と照合する値。Expression
戻り値
単一キーの Dictionary の場合: 属性が value_expr と等しいキーの配列。複合キーの Dictionary の場合: 属性が value_expr と等しいキーのタプルの配列。Dictionary 内に value_expr に対応する属性が存在しない場合は、空の配列が返されます。属性の値を解析できない場合、または値を属性のデータ型に変換できない場合、ClickHouse は例外をスローします。
例
使用例
dictGetOrDefault
導入バージョン: v18.16
Dictionary から値を取得し、キーが見つからない場合はデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_names— Dictionary のカラム名、またはカラム名のタプル。StringまたはTuple(String)id_expr— キーの値。UInt64 または Tuple(T) を返す式です。UInt64またはTuple(T)default_value— キーが見つからない場合に返すデフォルト値。型は属性のデータ型と一致している必要があります。
戻り値
キーが見つかった場合、id_expr に対応する Dictionary 属性の値を返します。
キーが見つからない場合は、指定された default_value を返します。
例
デフォルト値付きで値を取得
dictGetOrNull
導入バージョン: v21.4
Dictionary から値を取得し、キーが見つからない場合は NULL を返します。
構文
引数
dict_name— Dictionary の名前。文字列リテラル。 -attr_name— 取得するカラム名。文字列リテラル。 -id_expr— キー値。Dictionary のキー型の値を返す式。
戻り値
キーが見つかった場合は、id_expr に対応する Dictionary 属性値を返します。
キーが見つからない場合は、NULL を返します。
例
レンジキーを使用する Dictionary の例
dictGetString
導入バージョン: v1.1
Dictionary の属性値を、Dictionary の設定にかかわらず String データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値またはタプル値(Dictionary の設定に依存)を返す式。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返します。
対応する値が存在しない場合は、Dictionary の設定でその属性に対して指定された <null_value> 要素の内容を返します。
属性の値をパースできない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外を発生させます。
例
使用例
dictGetStringOrDefault
導入: v1.1
Dictionary の属性値を、Dictionary の設定に関係なく String 型に変換します。キーが見つからない場合は、指定されたデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が存在しない場合に返される値。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
それ以外の場合は default_value_expr パラメータとして渡された値を返します。
属性の値を解析できない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外をスローします。
例
使用例
dictGetUInt16
導入バージョン: v1.1
Dictionary の属性値を、Dictionary の設定内容に関係なく UInt16 型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値(Dictionary の設定に依存)を返す式。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返します。
対応する値が存在しない場合は、Dictionary 設定でその属性に対して指定された <null_value> 要素の内容を返します。
属性の値を解析できない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外をスローします。
例
使用例
dictGetUInt16OrDefault
導入バージョン: v1.1
Dictionary の設定に関係なく、Dictionary の属性値を UInt16 データ型に変換し、キーが見つからない場合は指定されたデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キーの値。Dictionary のキー型の値、またはタプル値(Dictionary の設定に依存)を返す式。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が存在しない場合に返される値(複数可)。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
存在しない場合は default_value_expr パラメータで渡された値を返します。
属性の値を解析できない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外を送出します。
例
使用例
dictGetUInt32
導入バージョン: v1.1
Dictionary の属性値を、Dictionary の設定に関係なく UInt32 データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値(Dictionary の設定に依存)を返す式。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
それ以外の場合には、Dictionary の設定でその属性に対して指定された <null_value> 要素の内容を返します。
属性の値をパースできない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外を送出します。
例
使用例
dictGetUInt32OrDefault
導入バージョン: v1.1
Dictionary の属性値を、Dictionary の設定内容に関係なく UInt32 型に変換し、キーが見つからない場合には指定されたデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定による)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が存在しない場合に返される値。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary の属性値を返し、
存在しない場合は default_value_expr パラメータで渡された値を返します。
属性値を解釈できない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外をスローします。
例
使用例
dictGetUInt64
導入: v1.1
Dictionary の属性の値を、Dictionary の設定に関係なく UInt64 データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キーの値。Dictionary のキー型の値、またはタプル値(Dictionary の構成に依存)を返す式。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返します。
対応する値が存在しない場合は、Dictionary の構成でその属性に対して指定されている <null_value> 要素の内容を返します。
ClickHouse は、属性の値を解析できない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetUInt64OrDefault
導入バージョン: v1.1
Dictionary の設定に関係なく Dictionary の属性値を UInt64 型に変換し、キーが見つからない場合は指定されたデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キーの値。Dictionary のキー型の値またはタプル値を返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が存在しない場合に返される値。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
それ以外の場合は default_value_expr パラメータで渡された値を返します。
ClickHouse は、属性の値を解析できない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetUInt8
導入バージョン: v1.1
Dictionary の属性値を、Dictionary の設定内容に関係なく UInt8 データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値(Dictionary の設定に依存)を返す式。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
それ以外の場合には、Dictionary の設定で当該属性に対して指定された <null_value> 要素の内容を返します。
ClickHouse は、属性の値を解析できない場合、または値が属性のデータ型と一致しない場合には例外を送出します。
例
使用例
dictGetUInt8OrDefault
導入バージョン: v1.1
Dictionary の属性値を、Dictionary の設定に関係なく UInt8 データ型に変換するか、キーが見つからない場合は指定したデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キーとなる値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定に依存)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が存在しない場合に返される値。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
それ以外の場合には default_value_expr パラメータとして渡された値を返します。
ClickHouse は、属性の値をパースできない場合、または値が属性のデータ型と一致しない場合に例外を送出します。
例
使用例
dictGetUUID
v1.1 で導入
Dictionary の設定に関係なく、Dictionary の属性値を UUID データ型に変換します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キーの値。Dictionary のキー型の値、またはタプル値(Dictionary の設定に依存)を返す式。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返します。
対応する値が存在しない場合は、Dictionary の設定でその属性に対して指定された <null_value> 要素の内容を返します。
ClickHouse は、属性の値をパースできない場合、または値が属性のデータ型と一致しない場合に例外をスローします。
例
使用例
dictGetUUIDOrDefault
導入バージョン: v1.1
Dictionary の設定に関係なく、Dictionary の属性の値を UUID データ型に変換します。キーが見つからない場合は、指定されたデフォルト値を返します。
構文
引数
dict_name— Dictionary の名前。Stringattr_name— Dictionary のカラム名。StringまたはTuple(String)id_expr— キー値。Dictionary のキー型の値、またはタプル値を返す式(Dictionary の設定に依存します)。ExpressionまたはTuple(T)default_value_expr— Dictionary にid_exprキーを持つ行が存在しない場合に返される値。ExpressionまたはTuple(T)
戻り値
id_expr に対応する Dictionary 属性の値を返し、
対応する値が存在しない場合は default_value_expr パラメータで指定された値を返します。
属性の値を解釈できない場合、または値が属性のデータ型と一致しない場合、ClickHouse は例外をスローします。
例
使用例
dictHas
導入バージョン: v1.1
Dictionary にキーが存在するかどうかを確認します。
構文
引数
dict_name— Dictionary の名前。Stringid_expr— キー値。const String
戻り値
キーが存在する場合は 1、存在しない場合は 0 を返します。UInt8
例
Dictionary 内でキーの存在を確認する
dictIsIn
導入バージョン: v1.1
Dictionary 内の階層チェーン全体を対象に、キーの先祖をチェックします。
構文
引数
dict_name— Dictionary の名前。Stringchild_id_expr— チェック対象のキー。Stringancestor_id_expr— キーchild_id_exprの想定される祖先キー。const String
返り値
child_id_expr が ancestor_id_expr の子でない場合は 0 を返し、child_id_expr が ancestor_id_expr の子である場合、または child_id_expr が ancestor_id_expr と等しい場合は 1 を返します。UInt8
例
階層関係の確認