* split up select.md * array-join.md basic refactoring * distinct.md basic refactoring * format.md basic refactoring * from.md basic refactoring * group-by.md basic refactoring * having.md basic refactoring * additional index.md refactoring * into-outfile.md basic refactoring * join.md basic refactoring * limit.md basic refactoring * limit-by.md basic refactoring * order-by.md basic refactoring * prewhere.md basic refactoring * adjust operators/index.md links * adjust sample.md links * adjust more links * adjust operatots links * fix some links * adjust aggregate function article titles * basic refactor of remaining select clauses * absolute paths in make_links.sh * run make_links.sh * remove old select.md locations * translate docs/es * translate docs/fr * translate docs/fa * remove old operators.md location * change operators.md links * adjust links in docs/es * adjust links in docs/es * minor texts adjustments * wip * update machine translations to use new links * fix changelog * es build fixes * get rid of some select.md links * temporary adjust ru links * temporary adjust more ru links * improve curly brace handling * adjust ru as well * fa build fix * ru link fixes * zh link fixes * temporary disable part of anchor checks
7.7 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 72537a2d52 |
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 |