Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ograniczenia klucza podstawowego, które przechwytują relacje między polami w tabelach, mogą pomóc użytkownikom i narzędziom zrozumieć relacje w danych. Ten artykuł zawiera przykłady pokazujące, jak można używać kluczy podstawowych z opcją RELY do optymalizacji niektórych typowych typów zapytań.
Nota
Optymalizacje zapytań skojarzone z poleceniem RELY wymagają uruchamiania zapytań na obliczeniach z obsługą funkcji Photon. Zobacz Co to jest Photon?. Narzędzie Photon jest domyślnie uruchamiane w usłudze SQL Warehouse i bezserwerowych obliczeniach dla notesów i przepływów pracy. Aby dowiedzieć się więcej na temat Photon, zobacz Co to jest Photon?.
Dodawanie ograniczeń klucza podstawowego
Ograniczenie klucza podstawowego można dodać w instrukcji tworzenia tabeli, tak jak w poniższym przykładzie, lub dodać ograniczenie do tabeli przy użyciu klauzuli ADD CONSTRAINT.
CREATE TABLE customer (
c_customer_sk int,
PRIMARY KEY (c_customer_sk)
...
)
W tym przykładzie c_customer_sk jest kluczem identyfikatora klienta. Ograniczenie klucza podstawowego określa, że każda wartość identyfikatora klienta powinna być unikatowa w tabeli. Usługa Azure Databricks nie wymusza kluczowych ograniczeń. Można je zweryfikować za pomocą istniejącego potoku danych lub etL. Zobacz Zarządzanie jakością danych przy użyciu oczekiwań potoku, aby dowiedzieć się więcej o oczekiwaniach dotyczących pracy w tabelach przesyłania strumieniowego i zmaterializowanych widokach. Zobacz ograniczenia usługi Azure Databricks, aby dowiedzieć się więcej na temat pracy z ograniczeniami w tabelach Delta.
Nota
Użytkownik jest odpowiedzialny za sprawdzenie, czy ograniczenie jest spełnione. Poleganie na ograniczeniu, które nie jest spełnione, może prowadzić do nieprawidłowych wyników zapytania.
Użyj RELY polecenia , aby włączyć optymalizacje
Gdy wiadomo, że ograniczenie klucza podstawowego jest prawidłowe, można włączyć optymalizacje na podstawie ograniczenia, określając je za pomocą opcji RELY. Aby uzyskać pełną składnię, zobacz klauzulę w
Opcja RELY umożliwia usłudze Azure Databricks wykorzystanie ograniczenia do ponownego zapisywania zapytań. Następujące optymalizacje można wykonać tylko wtedy, gdy RELY opcja jest określona w klauzuli ADD CONSTRAINT lub ALTER TABLE instrukcji.
Za pomocą ALTER TABLE możesz zmodyfikować klucz podstawowy tabeli, aby uwzględnić opcję RELY, jak pokazano w poniższym przykładzie.
ALTER TABLE
customer DROP PRIMARY KEY;
ALTER TABLE
customer
ADD
PRIMARY KEY (c_customer_sk) RELY;
Przykłady optymalizacji
Poniższe przykłady rozszerzają poprzedni przykład, który tworzy tabelę customer, w której c_customer_sk jest zweryfikowanym unikatowym identyfikatorem o nazwie PRIMARY KEY z określoną opcją RELY.
Przykład 1. Eliminowanie niepotrzebnych agregacji
Poniżej przedstawiono zapytanie, które stosuje operację DISTINCT do klucza podstawowego.
SELECT
DISTINCT c_customer_sk
FROM
customer;
Ponieważ kolumna c_customer_sk jest zweryfikowanym ograniczeniem PRIMARY KEY, wszystkie wartości w kolumnie są unikatowe. Po określeniu opcji RELY usługa Azure Databricks może zoptymalizować zapytanie, nie wykonując operacji DISTINCT.
Przykład 2. Eliminowanie niepotrzebnych sprzężeń
Poniższy przykład przedstawia zapytanie, w którym usługa Azure Databricks może wyeliminować niepotrzebne sprzężenia.
Zapytanie łączy tabelę faktów, store_sales z tabelą wymiarów customer. Wykonuje lewe zewnętrzne sprzężenie, dlatego wynik zapytania zawiera wszystkie rekordy z tabeli store_sales oraz dopasowane rekordy z tabeli customer. Jeśli w tabeli customer nie ma pasującego rekordu, w wyniku zapytania zostanie wyświetlona wartość NULL kolumny c_customer_sk.
SELECT
SUM(ss_quantity)
FROM
store_sales ss
LEFT JOIN customer c ON ss.customer_sk = c.c_customer_sk;
Aby zrozumieć, dlaczego to sprzężenie jest niepotrzebne, należy wziąć pod uwagę instrukcję zapytania. Wymaga tylko kolumny ss_quantity z tabeli store_sales. Tabela customer jest połączona po kluczu podstawowym, więc każdy wiersz store_sales odpowiada co najwyżej jednemu wierszowi w customer. Ponieważ operacja jest sprzężeniem zewnętrznym, wszystkie rekordy z tabeli store_sales są zachowywane, więc sprzężenie nie zmienia żadnych danych z tej tabeli. Agregacja SUM jest taka sama, czy te tabele są połączone.
Użycie ograniczenia klucza podstawowego z RELY daje optymalizatorowi zapytań informacje potrzebne do wyeliminowania sprzężenia. Zoptymalizowane zapytanie wygląda mniej więcej tak:
SELECT
SUM(ss_quantity)
FROM
store_sales ss
Następne kroki
Zobacz diagram relacji encji, aby dowiedzieć się, jak eksplorować relacje klucza głównego i klucza obcego w interfejsie użytkownika Eksploratora Katalogu.