辞書操作用の関数
DDLクエリで作成された辞書の場合、dict_name
パラメータは完全に指定する必要があります。例えば、<database>.<dict_name>
の形式です。そうでない場合、現在のデータベースが使用されます。
辞書の接続と設定に関する情報は、辞書を参照してください。
dictGet, dictGetOrDefault, dictGetOrNull
辞書から値を取得します。
引数
dict_name
— 辞書の名前。文字列リテラル。attr_names
— 辞書のカラム名、文字列リテラルまたはカラム名のタプル、タプル(文字列リテラル。id_expr
— キーの値。式として辞書のキータイプ値または辞書の設定に応じたタプルタイプの値を返す。default_value_expr
— 辞書にid_expr
キーを持つ行がない場合に返される値。式またはタプル(式)で、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
キーのすべての親を含む配列を作成します。階層辞書。
構文
引数
返される値
- キーの親。Array(UInt64)。
dictIsIn
辞書の階層チェーン全体を通じてキーの先祖を確認します。
引数
dict_name
— 辞書の名前。文字列リテラル。child_id_expr
— チェックするキー。式としてUInt64型の値を返します。ancestor_id_expr
—child_id_expr
キーの仮想的な先祖。式として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関数の逆変換です。
構文
引数
返される値
例
階層辞書を考えてみましょう。
最初のレベルの子供:
dictGetDescendant
dictGetChildren関数がlevel
回再帰的に適用されたかのようにすべての子孫を返します。
構文
引数
dict_name
— 辞書の名前。文字列リテラル。key
— キーの値。式としてUInt64型の値を返します。level
— 階層レベル。level = 0
の場合、すべての子孫を最後まで返します。UInt8。
返される値
例
階層辞書を考えてみましょう。
すべての子孫:
最初のレベルの子孫:
dictGetAll
正規表現木辞書に一致する各キーのノードのすべての属性値を取得します。
各値をArray(T)
として返すことを除いて、この関数はdictGet
と同様に動作します。
構文
引数
dict_name
— 辞書の名前。文字列リテラル。attr_names
— 辞書のカラム名、文字列リテラルまたはカラム名のタプル、タプル(文字列リテラル)。id_expr
— キーの値。式として辞書のキータイプ値の配列または辞書の設定に応じたタプル-タイプの値を返す。limit
- 返される各値配列の最大長さ。切り捨てる際には、子ノードが親ノードより優先され、それ以外の場合は正規表現木辞書の定義されたリスト順序が尊重されます。指定されていない場合、配列の長さは無制限です。
返される値
-
ClickHouseが辞書内で属性を正常に解析した場合、
id_expr
に対応する各属性による辞書の属性値の配列を返します。 -
辞書に
id_expr
に対応するキーがない場合、空の配列が返されます。
ClickHouseは属性の値を解析できない場合や、値が属性のデータタイプと一致しない場合には例外をスローします。
例
次の正規表現木辞書を考えます。
一致するすべての値を取得します。
一致する値を最大2つ取得します。
その他の関数
ClickHouseは、辞書の設定に関係なく、特定のデータタイプに辞書属性値を変換する専門関数をサポートします。
関数:
dictGetInt8
,dictGetInt16
,dictGetInt32
,dictGetInt64
dictGetUInt8
,dictGetUInt16
,dictGetUInt32
,dictGetUInt64
dictGetFloat32
,dictGetFloat64
dictGetDate
dictGetDateTime
dictGetUUID
dictGetString
dictGetIPv4
,dictGetIPv6
これらすべての関数にはOrDefault
修飾子があります。例えば、dictGetDateOrDefault
。
構文:
引数
dict_name
— 辞書の名前。文字列リテラル。attr_name
— 辞書のカラム名。文字列リテラル。id_expr
— キーの値。式としてUInt64またはタプルタイプの値を返します。default_value_expr
— 辞書にid_expr
キーを持つ行がない場合に返される値。式で、attr_name
属性に設定されたデータタイプで値を返します。
返される値
-
ClickHouseが属性のデータタイプとして属性を正常に解析できた場合、関数は
id_expr
に対応する辞書属性の値を返します。 -
辞書に要求された
id_expr
がない場合は:dictGet[Type]
は、辞書設定で属性に指定された<null_value>
要素の内容を返します。dictGet[Type]OrDefault
は、default_value_expr
パラメータとして渡された値を返します。
ClickHouseは属性の値を解析できない場合や、値が属性のデータタイプと一致しない場合には例外をスローします。