Praca z relacjami i kardynalnością

Ukończone

W przeciwieństwie do innych systemów zarządzania bazami danych, w usłudze Power BI relacja wiąże się z koncepcją kierunkowości. Ta kierunkowość odgrywa ważną rolę w filtrowaniu danych między wieloma tabelami. Podczas ładowania danych usługa Power BI automatycznie szuka relacji istniejących w danych przez dopasowywanie nazw kolumn. Możesz też użyć funkcji Zarządzaj relacjami, aby ręcznie edytować te opcje.

Na przykład pobrano wiele tabel z bazy danych Sales, a na poniższej ilustracji przedstawiono przykład modelu semantycznego. Usługa Power BI automatycznie wykryła kilka relacji, ale nie można rozpoznać ich znaczenia. Należy upewnić się, że relacje dokładnie odzwierciedlają te, które istnieją w danych.

Zrzut ekranu przedstawiający przykładowy model semantyczny

Relacje

Poniżej przedstawiono różne typy relacji, które znajdziesz w usłudze Power BI.

Relacja wiele do jednego (*:1) lub jeden do wielu (1: *)

  • Opisuje relację z wieloma wystąpieniami wartości w jednej kolumnie, które są powiązane tylko z jednym unikatowym wystąpieniem w innej kolumnie.

  • Opisuje kierunkowość między tabelami faktów i wymiarów.

  • Jest najczęściej spotykanym typem kierunkowości i domyślną opcją w usłudze Power BI, gdy tworzysz relacje automatycznie.

Przykładem relacji jeden do wielu jest relacja między tabelami CountryName (NazwaKraju) i Territory (Terytorium), gdzie może istnieć wiele obszarów skojarzonych z jednym unikatowym krajem.

Zrzut ekranu przedstawiający relację wiele do jednego.

Relacja jeden do jednego (1:1):

  • Opisuje relację, w której tylko jedno wystąpienie wartości jest wspólne między dwiema tabelami.

  • Wymaga unikatowych wartości w obu tabelach.

  • Ta relacja nie jest zalecana, ponieważ przechowuje nadmiarowe informacje i sugeruje, że model nie został poprawnie zaprojektowany. Lepszym rozwiązaniem jest połączenie tabel.

Przykładem relacji jeden do jednego byłby przypadek, gdzie produkty i identyfikatory produktów istnieją w dwóch różnych tabelach. Tworzenie relacji jeden do jednego jest nadmiarowe i te dwie tabele powinny zostać połączone.

Zrzut ekranu przedstawiający relację jeden do jednego.

Relacja wiele-do-wielu (.):

  • Opisuje relację, w której wiele wartości jest wspólnych między dwiema tabelami.

  • Nie wymaga unikatowych wartości w żadnej tabeli w relacji.

  • Nie jest to zalecane — brak unikatowych wartości wprowadza niejednoznaczność, a użytkownicy mogą nie wiedzieć, do czego odwołują się poszczególne kolumny wartości.

Na przykład poniższa ilustracja przedstawia relację wiele do wielu między tabelami Sales (Sprzedaż) i Order (Zamówienie) w kolumnie OrderDate (DataZamówienia), ponieważ z wieloma transakcjami sprzedaży może być skojarzonych wiele zamówień. Wprowadzono niejednoznaczność, ponieważ obie tabele mogą zawierać tę samą datę zamówienia.

Zrzut ekranu przedstawiający relację wiele do wielu.

Kierunek filtrowania krzyżowego

Dane można filtrować po jednej lub obu stronach relacji.

W przypadku jednego kierunku filtrowania krzyżowego:

  • Do filtrowania danych można użyć tylko jednej tabeli w relacji. Na przykład tabelę 1 można filtrować według tabeli 2, ale tabeli 2 nie można filtrować według tabeli 1.

    Porada

    Na podstawie kierunku strzałki relacji między tabelami możesz ustalić kierunek przepływu filtru. Zwykle te strzałki powinny wskazywać tabelę faktów.

  • W przypadku relacji jeden-do-wielu lub wiele-do-jednego kierunek filtrowania krzyżowego będzie od strony "jeden", co oznacza, że filtrowanie będzie występować w tabeli zawierającej wiele wartości.

W przypadkudwóch kierunków filtrowania krzyżowego (dwukierunkowego filtrowania krzyżowego):

  • Jednej tabeli w relacji można użyć do filtrowania drugiej. Na przykład tabelę wymiarów można filtrować za pośrednictwem tabeli faktów, a tabele faktów można filtrować za pośrednictwem tabeli wymiarów.

  • Dwukierunkowe filtrowanie krzyżowe z relacjami wiele do wielu może mieć niższą wydajność.

Ostrzeżenie dotyczące dwukierunkowego filtrowania krzyżowego: Nie należy włączać relacji dwukierunkowego filtrowania krzyżowego, chyba że w pełni rozumiesz jego konsekwencje. Włączenie go może prowadzić do niejednoznaczności, nadmiernego próbkowania, nieoczekiwanych wyników i potencjalnego obniżenia wydajności.

Kardynalność i kierunek filtrowania krzyżowego

W przypadku relacji jeden do jednego dostępne jest tylko dwukierunkowe filtrowanie krzyżowe. Dane można filtrować po dowolnej stronie tej relacji, a wynikiem jest pojedyncza, jednoznaczna wartość. Na przykład można filtrować według jednego identyfikatora produktu i zwracać pojedynczy produkt albo można filtrować według produktu i zwracać pojedynczy identyfikator produktu.

W przypadku relacji wiele do wielu można wybrać filtrowanie w jednym kierunku lub w obu kierunkach, używając dwukierunkowego filtrowania krzyżowego. Niejednoznaczność związana z dwukierunkowym filtrowaniem krzyżowym jest silniejsza w relacji wiele do wielu, ponieważ istnieje wiele ścieżek między różnymi tabelami. Jeśli utworzysz miarę, obliczenia lub filtr, mogą wystąpić niezamierzone konsekwencje podczas filtrowania danych oraz wynik końcowy może się różnić (zależnie od tego, którą relację wybierze aparat usługi Power BI podczas stosowania filtru). Taka sytuacja występuje też w przypadku relacji dwukierunkowych, dlatego należy zachować ostrożność podczas ich używania.

Z tego powodu relacje wiele do wielu i/lub relacje dwukierunkowe są skomplikowane. Jeśli nie masz pewności, jak dane będą wyglądać po zagregowaniu, takie typy otwartych relacji z wieloma kierunkami filtrowania mogą wprowadzać wiele ścieżek w danych.

Tworzenie relacji wiele do wielu

Rozważmy scenariusz, w którym planujesz utworzenie wizualizacji do analizy budżetów dla klientów i kont. Może istnieć wielu klientów na tym samym koncie i wiele kont z tym samym klientem, dlatego należy utworzyć relację wiele do wielu.

Zrzut ekranu przedstawiający relację wiele-do-wielu.

Aby utworzyć tę relację, przejdź do Zarządzanie relacjami>Nowa. W wyświetlonym oknie utwórz relację między kolumną Customer ID (Identyfikator klienta) w tabelach CustomerTable (TabelaKlientów) i AccountTable (TabelaKont). Relacja jest ustawiona na wiele-do-wielu, a typ filtru jest w obu kierunkach. Natychmiast pojawi się ostrzeżenie, że tego typu relacja powinna być używana tylko wtedy, gdy oczekuje się, że żadna kolumna nie będzie miała unikatowych wartości, ponieważ mogą wystąpić nieoczekiwane wartości. Należy filtrować w obu kierunkach, więc wybierz dwukierunkowe filtrowanie krzyżowe.

Wybierz pozycję OK. Została pomyślnie utworzona relacja wiele do wielu.

Zrzut ekranu przedstawiający relację wiele-do-wielu w temacie Zarządzanie relacjami.

Aby uzyskać więcej informacji, zobacz Relacje wiele do wielu w usłudze Power BI.