Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Birincil anahtar ve benzersiz kısıtlamalarla sorguları
Birincil anahtar ve benzersiz kısıtlamalar, hangi sütunların bir tablodaki her satırı benzersiz şekilde tanımladığını belirtir. Yabancı anahtarlarla birlikte, kullanıcıların ve araçların verilerinizdeki ilişkileri anlamasına yardımcı olurlar. Bu kısıtlamaları RELY seçeneğiyle belirttiğinizde, sorgu optimize edicisi bunları sorguları yeniden yazmak için kullanabilir; örneğin bir anahtar sütunundaki DISTINCT işlemini kaldırarak veya sonucu değiştirmeyen bir birleşmeyi ortadan kaldırarak.
Not
RELY sorgu optimizasyonları Pro veya sunucusuz SQL ambarları ya da sunucusuz hesaplama gerektirir ve klasik SQL ambarlarında desteklenmez.
Birincil anahtar veya benzersiz kısıtlamalar ekleme
Aşağıdaki örnekte olduğu gibi tablo oluşturma deyiminize birincil anahtar veya benzersiz kısıtlama ekleyebilir ya da ADD CONSTRAINT yan tümcesini kullanarak tabloya bir tane ekleyebilirsiniz.
CREATE TABLE customer (
c_customer_sk int,
PRIMARY KEY (c_customer_sk)
)
Bu örnekte müşteri c_customer_sk kimliği anahtarı verilmiştir. Birincil anahtar kısıtlaması, her müşteri kimliği değerinin tabloda benzersiz olması gerektiğini belirtir. Benzersiz kısıtlamalar, PRIMARY KEY yerine UNIQUE kullanarak aynı deseni izler.
Azure Databricks temel kısıtlamaları zorlamaz. Bunlar mevcut veri işlem hattınız veya ETL aracılığıyla doğrulanabilir. Akış tabloları ve gerçekleştirilmiş görünümler üzerinde çalışma beklentilerini öğrenmek için, İşlem hattı beklentileriyle veri kalitesini yönetme konularına bakın. Delta tablolarında kısıtlamalarla çalışma hakkında bilgi edinmek için bkz. Azure Databricks
Not
Bir kısıtlamanın karşılanıp karşılanmadığını denetlemek kullanıcının sorumluluğundadır. Karşılanmamış bir kısıtlamaya güvenmek yanlış sorgu sonuçlarına neden olabilir.
İyileştirmeleri etkinleştirmek için kullanın RELY
Birincil anahtarın veya benzersiz kısıtlamanın geçerli olduğunu bildiğinizde, kısıtlamaya göre iyileştirmeleri RELY seçeneğiyle belirterek etkinleştirebilirsiniz. Tam söz dizimi için bkz. ADD CONSTRAINT yan tümcesi.
RELY seçeneği, Azure Databricks'in sorguları yeniden yazma kısıtlamasını kullanmasına olanak tanır. Aşağıdaki iyileştirmeler yalnızca RELY seçeneği bir ADD CONSTRAINT cümle içinde veya ALTER TABLE ifade içerisinde belirtilmişse gerçekleştirilebilir.
ALTER TABLE kullanarak, aşağıdaki örnekte gösterildiği gibi bir tablonun birincil anahtarını RELY seçeneğini ekleyerek değiştirebilirsiniz.
ALTER TABLE
customer DROP PRIMARY KEY;
ALTER TABLE
customer
ADD
PRIMARY KEY (c_customer_sk) RELY;
İyileştirme örnekleri
Aşağıdaki örnekler, customerc_customer_sk seçeneği belirtilen PRIMARY KEY olarak adlandırılan doğrulanmış bir benzersiz tanımlayıcı olduğu bir RELY tablosu oluşturan önceki örneği genişletir. Aynı iyileştirmeler, RELY seçeneğiyle bir UNIQUE kısıtlamaya uygulanabilir.
Örnek 1: Gereksiz toplamaları ortadan kaldırma
Aşağıda, birincil anahtara işlem uygulayan bir DISTINCT sorgu gösterilmektedir.
SELECT
DISTINCT c_customer_sk
FROM
customer;
c_customer_sk sütunu doğrulanmış bir PRIMARY KEY kısıtlaması olduğundan, sütundaki tüm değerler benzersizdir.
RELY seçeneği belirtildiğinde Azure Databricks, DISTINCT işlemini gerçekleştirmeyerek sorguyu iyileştirebilir.
İyileştirici, seçilen sütun RELY ile belirtilen geçerli bir UNIQUE kısıtlaması kapsamında olduğunda DISTINCT öğesini de kaldırabilir.
Örnek 2: Gereksiz birleştirmeleri ortadan kaldırma
Aşağıdaki örnekte, Azure Databricks'in gereksiz bir katılımı ortadan kaldırabileceği bir sorgu gösterilmektedir.
Sorgu, store_sales olgu tablosunu customerboyut tablosuyla birleştirir. Sol dış birleştirme gerçekleştirir, bu nedenle sorgu sonucu store_sales tablosundaki tüm kayıtları ve customer tablosundaki eşleşen kayıtları içerir.
customer tablosunda eşleşen kayıt yoksa, sorgu sonucu NULL sütunu için c_customer_sk bir değer gösterir.
SELECT
SUM(ss_quantity)
FROM
store_sales ss
LEFT JOIN customer c ON ss.customer_sk = c.c_customer_sk;
Bu birleştirmenin neden gereksiz olduğunu anlamak için sorgu ifadesini göz önünde bulundurun. Yalnızca ss_quantity tablosundaki store_sales sütununu gerektirir.
customer tablosu birincil anahtarı veya benzersiz bir kısıt üzerinde birleştirildiğinden, store_sales içindeki her satır customer içindeki en fazla bir satırla eşleşir. İşlem bir dış birleşim olduğundan, store_sales tablosundaki tüm kayıtlar korunur, bu nedenle birleşim bu tablodaki verileri değiştirmez.
SUM toplama, bu tabloların birleştirilip birleştirilmemesiyle aynıdır.
RELY ile birincil anahtarın veya benzersiz kısıtlamanın kullanılması, sorgu iyileştiricisine birleştirmeyi ortadan kaldırmak için gereken bilgileri verir. İyileştirilmiş sorgu aşağıdaki gibi görünür:
SELECT
SUM(ss_quantity)
FROM
store_sales ss
Sonraki adımlar
Katalog Gezgini kullanıcı arabiriminde birincil anahtar ve yabancı anahtar ilişkilerini keşfetmeyi öğrenmek için bkz. Varlık İlişkisi Diyagramını Görüntüleme.