Coalesce
coalesce
, bir listedeki değerlere (sırayla) bakar ve ilk null olmayan değeri döndürür.
Bu fonksiyon aşağıdaki durumlarda kullanışlıdır:
- Eksik verileri doldurmak,
- Birden çok sütundan verileri birleştirmek veya
- Birden çok sütunda hesaplamalar oluşturmak.
Sözdizimi | Örnek |
---|---|
coalesce(değer1, değer2, …) | coalesce("null", "null", "bananas", "null" …) |
Bir değer listesinden ilk null olmayan değeri döndürür. | “bananas” |
Boş veya null değerleri doldurma
left_table_col | right_table_col | coalesce([right_table_col], 0) |
---|---|---|
1 | 1 | 1 |
2 | null | 0 |
3 | null | 0 |
4 | 4 | 4 |
Aşağıdaki durumlarda boş veya null değerleri doldurmak isteyebilirsiniz:
- Seyrek veri.
- Bir sol birleştirme tarafından oluşturulan
null
değerleri (yukarıda gösterilen örnek).
Daha ayrıntılı bir örnek için Eksik rapor tarihleri için verileri doldurma bölümüne bakın.
Farklı sütunlardan değerleri birleştirme
Notlar | Yorumlar | coalesce([Notes], [Comments] "No notes or comments.") |
---|---|---|
Bir notum var. | Bir yorumum var. | Bir notum var. |
Bir yorumum var. | Bir yorumum var. | |
Bir notum var. | Bir notum var. | |
Not veya yorum yok. |
Farklı sütunlarda hesaplamalar oluşturma
Ara Toplam | İndirim | coalesce([Subtotal], 0) - coalesce([Discount], 0) |
---|---|---|
10.00 | 0.15 | 9.85 |
21.00 | 21.00 | |
16.00 | 1.60 | 14.40 |
4.00 | 4.00 |
Patrona'daki hesaplamalar, girdi sütunlarından herhangi biri null
ise null
döndürür. Bunun nedeni, verilerinizdeki null
değerlerinin "eksik" veya "bilinmeyen" bilgileri temsil etmesidir; bu, mutlaka "0" miktarıyla aynı değildir. Yani, 1 + "bilinmeyen" = "bilinmeyen".
"Bilinmeyen" değerleri sıfır (veya verilerinizde "hiçbir şey" anlamına gelen başka bir değer) olarak ele almak istiyorsanız, hesaplamalarınızda kullanılan sütunları sarmak için coalesce
kullanmanızı öneririz.
Kabul edilen veri türleri
Veri türü | coalesce ile çalışır |
---|---|
Dize | ✅ |
Sayı | ✅ |
Zaman Damgası | ✅ |
Boolean | ✅ |
JSON | ❌ |
Sınırlamalar
Tek bir coalesce
fonksiyonunda aynı veri türlerini kullanın. Farklı veri türlerine sahip değerleri birleştirmek istiyorsanız:
- SQL
CAST
operatörünü kullanın. - Tablo Meta Verileri sayfasından veri türünü değiştirin.
coalesce
'i JSON veya JSONB veri türleriyle kullanmak istiyorsanız, önce JSON nesnelerini düzleştirmeniz gerekir. Daha fazla bilgi için SQL lehçenizde bulunan JSON fonksiyonlarını arayın. Bazı yaygın SQL referans kılavuzlarını burada bulabilirsiniz.
İlgili fonksiyonlar
Bu bölüm, Patrona coalesce
ifadesiyle değiştirilebilir şekilde kullanılabilen fonksiyonları ve formülleri kapsar ve kullanım durumunuz için en iyi seçeneği nasıl seçeceğinize dair notlar içerir.
Patrona ifadeleri
Diğer araçlar
Tüm örnekler, Değerleri birleştirme örneğinden özel ifadeyi ve örnek verileri kullanır:
Notlar | Yorumlar | coalesce([Notes], [Comments] "No notes or comments.") |
---|---|---|
Bir notum var. | Bir yorumum var. | Bir notum var. |
Bir yorumum var. | Bir yorumum var. | |
Bir notum var. | Bir notum var. | |
Not veya yorum yok. |
Case
case(ISBLANK([Notes]) = FALSE AND ISBLANK([Comments]) = FALSE, [Notes],
ISBLANK([Notes]) = TRUE AND ISBLANK([Comments]) = False, [Comments],
ISBLANK([Notes]) = FALSE AND ISBLANK([Comments]) = TRUE, [Notes],
ISBLANK([Notes]) = TRUE AND ISBLANK([Comments]) = TRUE, "No notes or comments")
Patrona coalesce
ifadesine eşdeğerdir:
coalesce([Notes], [Comments] "No notes or comments.")
Her iki sütununuz da boş olmadığında ilk değeri almayı umursamıyorsanız, coalesce
yazmak çok daha güzeldir. Belirli bir çıktı tanımlamak istiyorsanız case
kullanın (örneğin, "Bir notum ve bir yorumum var" yerine "Bir notum var" döndürmek istiyorsanız).
SQL
Çoğu durumda (bir NoSQL veritabanı kullanmıyorsanız), not defteri düzenleyicisinden oluşturulan sorular, veritabanınıza veya veri ambarınıza karşı çalışan SQL sorgularına dönüştürülür.
SQL coalesce
fonksiyonu
SELECT
COALESCE(notes, comments, "no notes or comments")
FROM
sample_table;
Patrona coalesce
ifadesine eşdeğerdir:
coalesce([Notes], [Comments] "No notes or comments.")
E-Tablolar
Notlar ve yorumlar tablonuz, "Notlar"ın A sütununda ve "Yorumlar"ın B sütununda olduğu bir e-tablodaysa, formül
=IF(ISBLANK($A2),$B2,IF(ISBLANK($B2),$A2,"No notes or comments."))
Patrona coalesce
ifadesine eşdeğerdir:
coalesce([Notes], [Comments] "No notes or comments.")
Alternatif olarak, bir e-tabloda üç veya daha fazla sütunda verileri "birleştiriyorsanız", bir DİZİN ve KAÇINCI ile bir dizi formülünde çalışmaya alışmış olabilirsiniz.
Python
Notlar ve yorumlar tablosunun df
adlı bir veri çerçevesinde olduğunu varsayarsak, pandas
fonksiyonlarının combine_first()
ve fillna()
kombinasyonu
df['custom_column'] = df['notes'].combine_first(df['comments'])\
.fillna('No notes or comments.')
Patrona coalesce
ifadesine eşdeğerdir:
coalesce([Notes], [Comments] "No notes or comments.")