Ana içeriğe geç

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:

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_colright_table_colcoalesce([right_table_col], 0)
111
2null0
3null0
444

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

NotlarYorumlarcoalesce([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İndirimcoalesce([Subtotal], 0) - coalesce([Discount], 0)
10.000.159.85
21.0021.00
16.001.6014.40
4.004.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:

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:

NotlarYorumlarcoalesce([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

Patrona case ifadesi

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.")

Daha fazla okuma