Map(K, V)
データ型 Map(K, V)
はキーとバリューのペアを格納します。
他のデータベースとは異なり、ClickHouseにおいてマップはユニークではありません。つまり、マップは同じキーを持つ2つの要素を含むことができます。
(その理由は、マップが内部的に Array(Tuple(K, V))
として実装されているためです。)
マップ m
のキー k
に対する値を取得するには、構文 m[k]
を使用します。
また、m[k]
はマップをスキャンします。つまり、この操作の実行時間はマップのサイズに対して線形です。
パラメータ
K
— マップのキーの型。 Nullable と LowCardinality 型がネストした Nullable 型を除いて、任意の型が使用できます。V
— マップのバリューの型。任意の型です。
例
マップ型のカラムを持つテーブルを作成します:
key2
の値を選択するには:
結果:
要求されたキー k
がマップに含まれていない場合、m[k]
は値の型のデフォルト値、例えば整数型の場合は 0
、文字列型の場合は ''
を返します。
マップにキーが存在するかを確認するには、関数 mapContains を使用できます。
結果:
Tuple から Map への変換
Tuple()
型の値は、関数 CAST を使用して Map()
型の値にキャストできます。
例
クエリ:
結果:
Map のサブカラムの読み取り
マップ全体を読み取ることを避けるために、一部のケースではサブカラム keys
と values
を使用できます。
例
クエリ:
結果:
関連情報
- map() 関数
- CAST() 関数
- -Map 型のための Map コンビネータ