* Replace underscores with hyphens * remove temporary code * fix style check * fix collapse
7.7 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | e8cd92bba3 |
44 | Sözlük anahtarı ve alanları |
Sözlük anahtarı Ve alanları
Bu <structure>
yan tümcesi sözlük anahtarı ve sorgular için kullanılabilir alanları açıklar.
XML açıklaması:
<dictionary>
<structure>
<id>
<name>Id</name>
</id>
<attribute>
<!-- Attribute parameters -->
</attribute>
...
</structure>
</dictionary>
Nitelikler elemanlarda açıklanmıştır:
<id>
— Anahtar sütun.<attribute>
— Veri sütunu. Birden fazla sayıda özellik olabilir.
DDL sorgusu:
CREATE DICTIONARY dict_name (
Id UInt64,
-- attributes
)
PRIMARY KEY Id
...
Öznitelikler sorgu gövdesinde açıklanmıştır:
PRIMARY KEY
— Anahtar sütunAttrName AttrType
— Veri sütunu. Birden fazla sayıda özellik olabilir.
Anahtar
ClickHouse aşağıdaki anahtar türlerini destekler:
- Sayısal tuş.
UInt64
. Tanımlanan<id>
etiket veya kullanmaPRIMARY KEY
kelime. - Kompozit anahtar. Farklı türde değerler kümesi. Etiket definedinde tanımlı
<key>
veyaPRIMARY KEY
kelime.
Bir xml yapısı şunları içerebilir <id>
veya <key>
. DDL sorgusu tek içermelidir PRIMARY KEY
.
!!! warning "Uyarıcı" Anahtarı bir öznitelik olarak tanımlamamalısınız.
Sayısal Tuş
Tür: UInt64
.
Yapılandırma örneği:
<id>
<name>Id</name>
</id>
Yapılandırma alanları:
name
– The name of the column with keys.
DDL sorgusu için:
CREATE DICTIONARY (
Id UInt64,
...
)
PRIMARY KEY Id
...
PRIMARY KEY
– The name of the column with keys.
Kompozit Anahtar
Anahtar bir olabilir tuple
her türlü alandan. Bu düzen bu durumda olmalıdır complex_key_hashed
veya complex_key_cache
.
!!! tip "Uç" Bileşik bir anahtar tek bir elemandan oluşabilir. Bu, örneğin bir dizeyi anahtar olarak kullanmayı mümkün kılar.
Anahtar yapısı eleman ayarlanır <key>
. Anahtar alanlar sözlük ile aynı biçimde belirtilir öznitelik. Örnek:
<structure>
<key>
<attribute>
<name>field1</name>
<type>String</type>
</attribute>
<attribute>
<name>field2</name>
<type>UInt32</type>
</attribute>
...
</key>
...
veya
CREATE DICTIONARY (
field1 String,
field2 String
...
)
PRIMARY KEY field1, field2
...
Bir sorgu için dictGet*
fonksiyon, bir tuple anahtar olarak geçirilir. Örnek: dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2))
.
Öznitelik
Yapılandırma örneği:
<structure>
...
<attribute>
<name>Name</name>
<type>ClickHouseDataType</type>
<null_value></null_value>
<expression>rand64()</expression>
<hierarchical>true</hierarchical>
<injective>true</injective>
<is_object_id>true</is_object_id>
</attribute>
</structure>
veya
CREATE DICTIONARY somename (
Name ClickHouseDataType DEFAULT '' EXPRESSION rand64() HIERARCHICAL INJECTIVE IS_OBJECT_ID
)
Yapılandırma alanları:
Etiket | Açıklama | Gerekli |
---|---|---|
name |
Sütun adı. | Evet |
type |
ClickHouse veri türü. ClickHouse, sözlükten belirtilen veri türüne değer atmaya çalışır. Örneğin, MySQL için alan olabilir TEXT , VARCHAR , veya BLOB MySQL kaynak tablosunda, ancak şu şekilde yüklenebilir String Clickhouse’da.Nullable desteklenmiyor. |
Evet |
null_value |
Varolan olmayan bir öğe için varsayılan değer. Örnekte, boş bir dizedir. Kullanamazsınız NULL bu alanda. |
Evet |
expression |
İfade bu ClickHouse değeri yürütür. İfade, uzak SQL veritabanında bir sütun adı olabilir. Bu nedenle, uzak sütun için bir diğer ad oluşturmak için kullanabilirsiniz. Varsayılan değer: ifade yok. |
Hayır |
hierarchical |
Eğer true , öznitelik, geçerli anahtar için bir üst anahtarın değerini içerir. Görmek Hiyerarşik Sözlükler.Varsayılan değer: false . |
Hayır |
injective |
Olup olmadığını gösteren bayrak id -> attribute ima isge is enjektif.Eğer true , ClickHouse sonra otomatik olarak yerleştirebilirsiniz GROUP BY fık .ra ile ilgili istek dictionariesleriniz Genellikle bu tür taleplerin miktarını önemli ölçüde azaltır.Varsayılan değer: false . |
Hayır |
is_object_id |
Bir MongoDB belgesi için sorgunun yürütülüp yürütülmediğini gösteren bayrak ObjectID .Varsayılan değer: false . |
Hayır |