Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podczas nawiązywania połączenia ze źródłem danych przy użyciu trybu DirectQuery możesz użyć wyboru Przyjmij integralność referencyjną , aby umożliwić uruchamianie bardziej wydajnych zapytań względem źródła danych. Ta funkcja ma kilka wymagań dotyczących danych bazowych i jest dostępna tylko w przypadku korzystania z trybu DirectQuery.
Ustawienie Przyjmij integralność referencyjną umożliwia wykonywanie zapytań względem źródła danych w celu używania instrukcji INNER JOIN, a nie OUTER JOIN, co zwiększa wydajność zapytań.
Wymagania dotyczące używania opcji Przyjmij integralność referencyjną
To ustawienie jest ustawieniem zaawansowanym i jest włączone tylko podczas nawiązywania połączenia z danymi przy użyciu trybu DirectQuery. Aby prawidłowo działać integralność referencyjna, należy spełnić następujące wymagania:
- Dane w kolumnie Od w relacji nigdy nie mają wartości null ani nie są puste
- Dla każdej wartości w kolumnie Od znajduje się odpowiadająca jej wartość w kolumnie Do
W tym kontekście kolumna Od jest relacją Wiele w relacji jeden do wielu lub kolumną w pierwszej tabeli w relacji jeden do jednego.
Przykład użycia opcji Przyjmij integralność referencyjną
W poniższym przykładzie pokazano, jak działa przyjmij integralność referencyjną w przypadku użycia w połączeniach danych. Przykład łączy się ze źródłem danych zawierającym tabelę Orders , tabelę Products i tabelę Depots .
Na poniższej ilustracji przedstawiającej tabelę Orders (Zamówienia) i Tabelę Products (Produkty) istnieje integralność referencyjna między kolumnami Orders[ProductID] i Products[ProductID]. Kolumna [ProductID] w tabeli Orders nigdy nie ma wartości Null, a każda wartość jest również wyświetlana w tabeli Products . W związku z tym należy ustawić opcję Przyjmij integralność referencyjną w celu uzyskania bardziej wydajnych zapytań. Użycie tego ustawienia nie zmienia wartości wyświetlanych w wizualizacjach.
Na następnej ilustracji zwróć uwagę, że między kolumnami Orders[DepotID] i Depots[DepotID] nie istnieje integralność referencyjna, ponieważ identyfikator DepotID ma wartość Null dla niektórych zamówień. W związku z tym nie należy ustawiać opcji Przyjmij integralność referencyjną.
Na koniec w poniższych tabelach nie istnieje integralność referencyjna między kolumnami Orders[CustomerID] i Customers[CustID]. Identyfikator CustomerID zawiera wartość CustX, która nie istnieje w tabeli Customers . W związku z tym nie należy ustawiać opcji Przyjmij integralność referencyjną.
Ustawienie Przyjmij integralność referencyjną
Aby włączyć tę funkcję, wybierz pozycję Przyjmij integralność referencyjną , jak pokazano na poniższej ilustracji.
Po wybraniu tego ustawienia jest weryfikowane względem danych, aby upewnić się, że nie ma wierszy o wartości null lub niedopasowanych. Jednak w przypadku bardzo dużej liczby wartości walidacja nie gwarantuje, że nie ma żadnych problemów z integralnością referencyjną.
Ponadto walidacja odbywa się w momencie edytowania relacji i nie odzwierciedla żadnych kolejnych zmian w danych.
Co się stanie, jeśli niepoprawnie ustawisz opcję Przyjmij integralność referencyjną?
Jeśli ustawisz ustawienie Przyjmij integralność referencyjną, gdy występują problemy z integralnością referencyjną w danych, to ustawienie nie powoduje błędów. Jednak powoduje to pozorne niespójności w danych. Na przykład w przypadku relacji z tabelą Depots opisanej tutaj spowoduje to następujące kwestie:
- Wizualizacja przedstawiająca łączną liczbę order qty pokazuje wartość 40.
- Wizualizacja przedstawiająca łączną liczbę order qty by Depot City pokazuje łączną wartość tylko 30, ponieważ nie zawierałaby identyfikatora zamówienia 1, gdzie DepotID ma wartość Null.
Powiązana zawartość
- Dowiedz się więcej o trybie DirectQuery.
- Uzyskaj więcej informacji na temat relacji w usłudze Power BI.
- Dowiedz się więcej o widoku modelu w programie Power BI Desktop.