4.9 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 72537a2d52 |
40 | Katmak |
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
join_strictness
– Katılık katılın.join_type
– Birleştirme türü.k1[, k2, ...]
– Key columns from theUSING
fık thera:JOIN
işlemi yapılmamaktadır.
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.