Dictionary の属性
ClickHouse Cloud でディクショナリを使用している場合は、ディクショナリの作成に DDL クエリオプションを使用し、ユーザー default でディクショナリを作成してください。
また、Cloud 互換性ガイド でサポートされているディクショナリソースの一覧を確認してください。
structure 句は、クエリで利用できる Dictionary のキーとフィールドを定義します。
XML による定義:
属性は、次の要素で定義されます:
<id>— キーカラム<attribute>— データカラム: 属性を複数定義できます。
DDLクエリ:
Attributes are described in the クエリ本体で定義します:
PRIMARY KEY— キーとなるカラムAttrName AttrType— データ カラム。属性は複数指定できます。
キー
ClickHouse は次の種類のキーをサポートします:
- 数値キー。型は
UInt64。<id>タグ内、またはPRIMARY KEYキーワードを使って定義します。 - 複合キー。異なる型の値の Set。
<key>タグ内、またはPRIMARY KEYキーワードを使って定義します。
XML 構造では <id> か <key> のいずれか一方のみを含めることができます。DDL クエリでは PRIMARY KEY を 1 つだけ指定しなければなりません。
キーを属性として定義してはいけません。
数値キー
型: UInt64。
設定例:
構成フィールド:
name– キーを持つカラムの名前。
DDL クエリの場合:
PRIMARY KEY– キーを格納するカラム名。
複合キー
キーには、任意の型のフィールドからなる tuple を使用できます。この場合のレイアウトは complex_key_hashed または complex_key_cache でなければなりません。
複合キーは 1 要素のみから構成することもできます。その場合、例えば文字列をキーとして使用できます。
キー構造は <key> 要素内で設定します。キー フィールドは、Dictionary の属性と同じ形式で指定します。例:
または
dictGet* 関数に対するクエリでは、タプルがキーとして渡されます。例: dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2))。
属性
設定例:
または
設定項目:
| Tag | Description | Required |
|---|---|---|
name | カラム名。 | Yes |
type | ClickHouse のデータ型: UInt8、UInt16、UInt32、UInt64、Int8、Int16、Int32、Int64、Float32、Float64、UUID、Decimal32、Decimal64、Decimal128、Decimal256、Date、Date32、DateTime、DateTime64、String、Array。 ClickHouse は Dictionary に格納された値を、指定されたデータ型にキャストしようとします。たとえば、MySQL では MySQL のソーステーブルにおいてフィールドが TEXT、VARCHAR、BLOB のいずれかであっても、ClickHouse には String として取り込めます。Nullable は現在、Flat、Hashed、ComplexKeyHashed、Direct、ComplexKeyDirect、RangeHashed、Polygon、Cache、ComplexKeyCache、SSDCache、SSDComplexKeyCache Dictionary でサポートされています。IPTrie Dictionary では Nullable 型はサポートされていません。 | Yes |
null_value | 存在しない要素に対するデフォルト値。 この例では空文字列です。NULL 値は Nullable 型に対してのみ使用できます(前の行の型の説明を参照してください)。 | Yes |
expression | ClickHouse が値に対して実行する式。 この式は、リモート SQL データベース内のカラム名である場合があります。そのため、リモートのカラムに対するエイリアスを作成するために使用できます。 デフォルト値: 式なし。 | No |
hierarchical | true の場合、その属性には現在のキーに対する親キーの値が含まれます。Hierarchical Dictionaries を参照してください。デフォルト値: false。 | No |
injective | id -> attribute の写像が単射であるかどうかを示すフラグ。true の場合、ClickHouse は単射である Dictionary へのリクエストを GROUP BY 句の後ろに自動的に挿入できます。通常、これによりそのようなリクエストの数を大幅に削減できます。デフォルト値: false。 | No |
is_object_id | クエリが ObjectID による MongoDB ドキュメントに対して実行されるかどうかを示すフラグ。デフォルト値: false。 |