Udostępnij za pośrednictwem


Stosowanie ustawienia Przyjmij integralność referencyjną w programie Power BI Desktop

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ń.

Zrzut ekranu przedstawiający okno dialogowe Edytowanie relacji, aby wybrać pozycję Przyjmij integralność referencyjną.

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.

    Zrzut ekranu przedstawiający tabelę Orders i tabelę Products.

  • 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ą.

    Zrzut ekranu przedstawiający tabelę Orders i tabelę Depots.

  • 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ą.

    Zrzut ekranu przedstawiający tabelę Orders (Zamówienia) i tabelę Customers (Klienci).

Ustawienie Przyjmij integralność referencyjną

Aby włączyć tę funkcję, wybierz pozycję Przyjmij integralność referencyjną , jak pokazano na poniższej ilustracji.

Zrzut ekranu przedstawiający okno dialogowe Edytowanie relacji, które umożliwia wybranie pozycji Przyjmij integralność referencyjną.

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.