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.
Tablolardaki alanlar arasındaki ilişkileri yakalayan birincil anahtar kısıtlamaları, kullanıcıların ve araçların verilerinizdeki ilişkileri anlamasına yardımcı olabilir. Bu makale, bazı yaygın sorgu türlerini iyileştirmek için RELY seçeneğiyle birincil anahtarları nasıl kullanabileceğinizi gösteren örnekler içerir.
Not
Komutla RELY ilişkili sorgu iyileştirmeleri, sorguların Photon özellikli işlemde çalıştırılmasını gerektirir. Bkz . Photon nedir?. Foton, varsayılan olarak SQL ambarlarında ve not defterleri ve iş akışları için sunucusuz işlemde çalışır. Photon hakkında daha fazla bilgi edinmek için bkz . Photon nedir?.
Birincil anahtar kısıtlamaları ekleme
Aşağıdaki örnekte olduğu gibi tablo oluşturma deyiminize birincil anahtar kısıtlaması ekleyebilir veya ADD CONSTRAINT yan tümcesini kullanarak tabloya bir kısıtlama 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. 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 kısıtlamasının geçerli olduğunu bildiğinizde, RELY seçeneğiyle belirterek kısıtlamaya göre iyileştirmeleri 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 seçenek bir RELY yan tümcede veya ADD CONSTRAINT deyimde belirtilmişse ALTER TABLE 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.
Ö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.
Ö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ında birleştirildiğinden, her store_sales satırı customeriçindeki en fazla bir satırla eşleşmektedir. İş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.
birincil anahtar kısıtlamasını RELY ile kullanmak, 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.