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:

DDL sorgusu:

CREATE DICTIONARY dict_name (
    Id UInt64,
    -- attributes
)
PRIMARY KEY Id
...

Öznitelikler sorgu gövdesinde açıklanmıştır:

Anahtar 

ClickHouse aşağıdaki anahtar türlerini destekler:

  • Sayısal tuş. UInt64. Tanımlanan <id> etiket veya kullanma PRIMARY KEY kelime.
  • Kompozit anahtar. Farklı türde değerler kümesi. Etiket definedinde tanımlı <key> veya PRIMARY KEY kelime.

Bir xml yapısı şunları içerebilir <id> veya <key>. DDL sorgusu tek içermelidir PRIMARY KEY.

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.

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

Ayrıca Bakınız 

Orijinal makale

Rating: 2.5 - 8 votes

Was this content helpful?
★★★☆☆