Pracuj z relacjami i kardynalnością
W przeciwieństwie do innych systemów zarządzania bazami danych, Power BI pojęcie kierunkowości jest w relacji. Kierunkowość pełni ważną rolę w filtrowaniu danych między wieloma tabelami. Podczas ładowania danych automatycznie Power BI wyszukuje relacje istniejące w danych, pasujące nazwy kolumn. Te opcje można również edytować ręcznie, za pomocą funkcji Zarządzanie relacjami.
Na przykład z bazy danych sprzedaży pobrano wiele tabel, a przykładem modelu semantycznego jest poniższy obraz. Power BI Użytkownik ma kilka relacji z automatycznymi powiązaniami, ale nie można określić, co to znaczy. Chcesz mieć pewność, że relacje dokładnie odzwierciedlają te, które istnieją w danych.
Relacje
Są to różne typy relacji, które można znaleźć w Power BI.
Relacja typu „wiele do jednego (*:1)
” lub „jeden do wielu (1: *)
”
Opisuje relację, w której w jednej kolumnie znajduje się wiele wystąpień wartości, które są powiązane tylko z jednym unikatowym odpowiednim wystąpieniem w innej kolumnie.
Opisuje kierunkowość między tabelami faktów i wymiarów.
Jest najczęstszym typem kierunkowości i jest domyślnym Power BI typem podczas automatycznego tworzenia relacji.
Przykładem relacji jeden-do-wielu mogą być tabele CountryName i Terytorium, w których można skojarzyć wiele obszarów z jednym unikatowym krajem.
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.
Nie jest zalecane, ponieważ ta relacja przechowuje nadmiarowe informacje i sugeruje, że model nie został poprawnie zaprojektowany. Najlepiej połączyć tabele.
Przykładem relacji jeden-do-jednego może być, gdyby produkty i identyfikatory produktów były dostępne w dwóch różnych tabelach. Tworzenie relacji jeden-do-jednego jest nadmiarowe i należy połączyć te dwie tabele.
Relacja typu „wiele do wielu”:
Opisuje relację, w której wiele wartości jest wspólnych między dwiema tabelami.
Nie wymaga unikatowych wartości w tabeli w relacji.
Nie jest zalecane; brak unikatowych wartości wprowadza niejednoznaczność, a użytkownicy mogą nie wiedzieć, do której kolumny wartości się odwołuje.
Na przykład poniższy rysunek przedstawia relację typu „wiele do wielu ” między tabelami Sprzedaż i Zamówienie w kolumnie OrderDate , ponieważ z wieloma zamówieniami może być skojarzonych wiele zamówień. Wprowadzono niejednoznaczność, ponieważ obie tabele mogą mieć tę samą datę zamówienia.
Kierunek filtru krzyżowego
Dane można filtrować po jednej lub obu stronach relacji.
Z jednym kierunkiem filtru krzyżowego:
Do filtrowania danych można użyć tylko jednej tabeli w relacji. Na przykład tabela 1 może być filtrowana według tabeli 2, ale tabela 2 nie może być filtrowana według tabeli 1.
Napiwek
Postępuj zgodnie ze strzałką w relacji między tabelami, aby wiedzieć, w którym kierunku będzie przepływ filtru. Zazwyczaj strzałki mają wskazujeć tabelę factów.
W przypadku relacji jeden-do-wielu lub wielu-jeden kierunek filtru krzyżowego będzie pochodził od strony „jeden”, co oznacza, że filtrowanie będzie się pojawiać w tabeli o wielu wartościach.
W przypadku obu kierunków filtrowania krzyżowego i dwukierunkowego filtrowania krzyżowego:
Jedna tabela w relacji może być używana do filtrowania drugiej. Na przykład tabela wymiarów może być filtrowana przez tabelę faktów, a tabele faktów mogą być filtrowane przez tabelę wymiarów.
W przypadku filtrowania odsyłaczy dwukierunkowych z relacjami typu „wiele do wielu” może być niższa wydajność.
W przypadku dwukierunkowego filtrowania krzyżowego należy zachować szczególną ostrożność: nie należy włączać relacji filtrowania odsyłacza dwukierunkowego, chyba że w pełni zrozumieć konsekwencje tego działania. Włączenie tej funkcji może prowadzić do niejednoznaczności, przekroczenie kontroli wyrywkowej, nieoczekiwanych wyników i potencjalnego spadku wydajności.
Liczebność i kierunek filtru krzyżowego
W przypadku relacji jeden-do-jednego jedyną dostępną opcją jest filtrowanie odsyłaczy dwukierunkowych. Dane można filtrować po obu stronach tej relacji, co pozwala uzyskać jedną odrębną, jednoznaczną wartość. Na przykład można odfiltrować jeden identyfikator produktu i zwrócić jeden produkt, a następnie można odfiltrować produkt i zwrócić jeden identyfikator produktu.
W przypadku relacji typu „wiele do wielu” można wybrać filtrowanie w jednym lub w obu kierunkach za pomocą dwukierunkowego filtrowania krzyżowego. Niejednoznaczność skojarzona z dwukierunkowym filtrowaniem krzyżowym jest amplifikowana w relacji typu „wiele do wielu”, ponieważ między różnymi tabelami będzie istnieć wiele ścieżek. W przypadku tworzenia miary, Power BI obliczania lub filtrowania mogą wystąpić nieprzewidywane skutki filtrowania danych, a w zależności od relacji wybranej przez aparat podczas stosowania filtru wynik końcowy może być inny. Ta sytuacja dotyczy także relacji dwukierunkowych i przyczyny, dla której należy używać.
Z tego względu relacje typu „wiele do wielu” i/lub relacje dwukierunkowe są skomplikowane. Jeśli nie ma pewności, jak dane są agregowane, te typy relacji zakończonej z wieloma kierunkami filtrowania mogą wprowadzać wiele ścieżek przez dane.
Tworzenie relacji typu „wiele do wielu”
Rozważmy scenariusz, w którym trzeba budować budżety odbiorców i kont. Na tym samym koncie może mieć wielu odbiorców oraz wiele kont z tym samym klientem, więc wiadomo, że trzeba utworzyć relację typu „wiele do wielu”.
Aby utworzyć tę relację, przejdź do tematu Zarządzanie relacjami nowe>. W wynikowym oknie utwórz relację między kolumnami Identyfikator odbiorcy w tabeli odbiorcy i w tabeli kont Relacja ma wartość „wiele do wielu”, a typ filtru jest w obu kierunkach. Natychmiast pojawi się ostrzeżenie, że tego typu relacja powinna być dostępna tylko wtedy, gdy oczekiwano, że żadna z kolumn nie będzie mieć unikatowych wartości, ponieważ mogą wystąpić nieoczekiwane wartości. Ponieważ filtrowanie ma być w obu kierunkach, należy wybrać filtrowanie dwukierunkowe.
Wybierz przycisk OK. Utworzono relację typu „wiele do wielu”.
Aby uzyskać więcej informacji, zobacz temat Wiele do wielu relacji w Power BI.