Katmak 

Kullanılmak üzere hazırlanmış veri yapısı JOIN harekat.

Tablo oluşturma 

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
) ENGINE = Join(join_strictness, join_type, k1[, k2, ...])

Ayrıntılı açıklamasına bakın CREATE TABLE sorgu.

Motor Parametreleri

Girmek join_strictness ve join_type tırnak işaretleri olmadan parametreler, örneğin, Join(ANY, LEFT, col1). Onlar eşleşmelidir JOIN tablo için kullanılacak işlem. Parametreler eşleşmezse, ClickHouse bir istisna atmaz ve yanlış veri döndürebilir.

Tablo Kullanımı 

Örnek 

Sol taraftaki tablo oluşturma:

CREATE TABLE id_val(`id` UInt32, `val` UInt32) ENGINE = TinyLog
INSERT INTO id_val VALUES (1,11)(2,12)(3,13)

Sağ tarafı oluşturma Join Tablo:

CREATE TABLE id_val_join(`id` UInt32, `val` UInt8) ENGINE = Join(ANY, LEFT, id)
INSERT INTO id_val_join VALUES (1,21)(1,22)(3,23)

Tabloları birleştirme:

SELECT * FROM id_val ANY LEFT JOIN id_val_join USING (id) SETTINGS join_use_nulls = 1
┌─id─┬─val─┬─id_val_join.val─┐
│  1 │  11 │              21 │
│  2 │  12 │            ᴺᵁᴸᴸ │
│  3 │  13 │              23 │
└────┴─────┴─────────────────┘

Alternatif olarak, veri alabilirsiniz Join tablo, birleştirme anahtarı değerini belirterek:

SELECT joinGet('id_val_join', 'val', toUInt32(1))
┌─joinGet('id_val_join', 'val', toUInt32(1))─┐
│                                         21 │
└────────────────────────────────────────────┘

Veri seçme ve ekleme 

Kullanabilirsiniz INSERT veri eklemek için sorgular Join- motor masaları. Tablo ile oluşturulmuş ise ANY katılık, yinelenen anahtarlar için veriler göz ardı edilir. İle... ALL katılık, tüm satırlar eklenir.

Gerçekleştir aemezsiniz SELECT doğrudan tablodan sorgulayın. Bunun yerine, aşağıdaki yöntemlerden birini kullanın:

  • Tabloyu sağ tarafa yerleştirin. JOIN yan.
  • Call the joinGet tablodan bir sözlükten aynı şekilde veri ayıklamanızı sağlayan işlev.

Sınırlamalar ve Ayarlar 

Bir tablo oluştururken aşağıdaki ayarlar uygulanır:

Bu Join- motor tabloları kullanılamaz GLOBAL JOIN harekat.

Bu Join- motor kullanımına izin verir join_use_nulls ayarı CREATE TABLE deyim. Ve SELECT sorgu kullanımına izin verir join_use_nulls çok. Eğer farklı varsa join_use_nulls ayarlar, tablo birleştirme bir hata alabilirsiniz. Bu katılmak türüne bağlıdır. Kullandığınızda joinGet fonksiyonu, aynı kullanmak zorunda join_use_nulls ayarı CRATE TABLE ve SELECT deyimler.

Veri Depolama 

Join tablo verileri her zaman RAM'de bulunur. Bir tabloya satır eklerken, sunucu yeniden başlatıldığında geri yüklenebilir, böylece ClickHouse disk üzerindeki dizine veri bloklarını yazar.

Sunucu yanlış yeniden başlatılırsa, diskteki veri bloğu kaybolabilir veya zarar görebilir. Bu durumda, dosyayı hasarlı verilerle el ile silmeniz gerekebilir.

Orijinal makale

Rating: 3.6 - 5 votes

Was this content helpful?
★★★★☆