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
nulldeğ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
CASToperatö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.")