Tworzenie relacji i zarządzanie nimi w programie Power BI Desktop

Jeśli masz wiele tabel, istnieje prawdopodobieństwo, że wykonasz analizę przy użyciu danych ze wszystkich tych tabel. Relacje między tymi tabelami są niezbędne do dokładnego obliczenia wyników i wyświetlenia poprawnych informacji w raportach. W większości przypadków nie trzeba nic robić. Funkcja autowykrywania robi to za Ciebie. Czasami jednak może być konieczne samodzielne utworzenie relacji lub wprowadzenie zmian w relacji. Tak czy inaczej, ważne jest, aby zrozumieć relacje w programie Power BI Desktop oraz jak je tworzyć i edytować.

Autowykrywanie podczas ładowania

Jeśli wykonujesz zapytanie o co najmniej dwie tabele w tym samym czasie, gdy dane są ładowane, program Power BI Desktop próbuje znaleźć i utworzyć relacje. Opcje relacji Kardynalność, Kierunek filtrowania krzyżowego i Ustaw tę relację jako aktywne są automatycznie ustawiane. Program Power BI Desktop analizuje nazwy kolumn w tabelach, do których wykonujesz zapytania, aby określić, czy istnieją jakieś potencjalne relacje. Jeśli istnieją, te relacje są tworzone automatycznie. Jeśli program Power BI Desktop nie może określić wysokiego poziomu pewności, że istnieje dopasowanie, nie tworzy relacji. Jednak nadal możesz użyć okna dialogowego Zarządzanie relacjami , aby ręcznie tworzyć lub edytować relacje.

Tworzenie relacji z autowykrywaniem

Na karcie Modelowanie wybierz pozycję Zarządzaj relacjami>Autowykrywanie.

Animation showing how to create a relationship with autodetect.

Ręczne tworzenie relacji

  1. Na karcie Modelowanie wybierz pozycję Zarządzaj relacjami>Nowy.

  2. W oknie dialogowym Tworzenie relacji na pierwszej liście rozwijanej tabeli wybierz tabelę. Wybierz kolumnę, której chcesz użyć w relacji.

  3. Na drugiej liście rozwijanej tabeli wybierz drugą tabelę, która ma być w relacji. Wybierz inną kolumnę, której chcesz użyć, a następnie wybierz przycisk OK.

    Animation showing how to create a manual relationship.

Domyślnie program Power BI Desktop automatycznie konfiguruje opcje Kardynalność (kierunek), Kierunek filtrowania krzyżowego i Uaktywnij tę relację dla nowej relacji. W razie potrzeby można jednak zmienić te ustawienia. Aby uzyskać więcej informacji, zobacz Omówienie dodatkowych opcji.

Jeśli żadna z tabel wybranych dla relacji nie ma unikatowych wartości, zostanie wyświetlony następujący błąd: Jedna z kolumn musi mieć unikatowe wartości. Co najmniej jedna tabela w relacji musi mieć odrębną, unikatową listę wartości kluczy, co jest typowym wymaganiem dla wszystkich technologii relacyjnej bazy danych.

Jeśli wystąpi ten błąd, istnieje kilka sposobów rozwiązania problemu:

  • Użyj polecenia Usuń duplikaty , aby utworzyć kolumnę z unikatowymi wartościami. Wadą tego podejścia jest to, że można utracić informacje po usunięciu zduplikowanych wierszy. Często klucz (wiersz) jest zduplikowany z dobrego powodu.
  • Dodaj tabelę pośrednią zawierającą listę unikatowych wartości kluczy do modelu, która zostanie następnie połączona z obiema oryginalnymi kolumnami w relacji.

Aby uzyskać więcej informacji, zobacz ten wpis w blogu.

Alternatywnie w układach diagramu widoku modelu można przeciągać i upuszczać kolumnę z jednej tabeli do kolumny w innej tabeli, aby utworzyć relację.

Edytowanie relacji

Istnieją dwa sposoby edytowania relacji w usłudze Power BI.

Pierwszą metodą edytowania relacji jest użycie relacji Do edycji w okienku Właściwości w widoku modelu, w którym można wybrać dowolny wiersz między dwiema tabelami, aby wyświetlić opcje relacji w okienku Właściwości . Pamiętaj, aby rozwinąć okienko Właściwości , aby wyświetlić opcje relacji.

Screenshot of adjusting relationships in the properties pane.

Pokaz wideo przedstawiający edytowanie relacji można również zobaczyć w okienku Właściwości.

Drugą metodą edytowania relacji jest użycie okna dialogowego Edytor relacji, które można otworzyć na wiele sposobów w programie Power BI Desktop. Na poniższej liście przedstawiono różne sposoby otwierania okna dialogowego Edytor relacji:

W widoku Raport wykonaj dowolną z następujących czynności:

  • Wybierz wstążkę Modelowanie Zarządzaj relacjami, a następnie wybierz relację i wybierz pozycję Edytuj.>
  • Wybierz tabelę z listy Pola, a następnie wybierz wstążkę >Narzędzia tabel Zarządzaj relacjami, a następnie wybierz relację, a następnie wybierz pozycję Edytuj.

W widoku Dane wybierz wstążkę Narzędzia tabel Zarządzaj relacjami, a następnie wybierz relację, a następnie wybierz pozycję Edytuj.>

W widoku Model wykonaj dowolną z następujących czynności:

  • Wybierz wstążkę Narzędzia główne Zarządzaj relacjami, a następnie wybierz relację, a następnie wybierz pozycję Edytuj.>
  • Kliknij dwukrotnie dowolny wiersz między dwiema tabelami.
  • Kliknij prawym przyciskiem myszy dowolny wiersz między dwiema tabelami, a następnie wybierz polecenie Właściwości.
  • Wybierz dowolny wiersz między dwiema tabelami, a następnie wybierz pozycję Otwórz edytor relacji w okienku Właściwości .

Na koniec możesz również edytować relację z dowolnego widoku, kliknąć prawym przyciskiem myszy lub wybrać wielokropek, aby przejść do menu kontekstowego dowolnej tabeli, a następnie wybrać pozycję Zarządzaj relacjami, wybrać relację, a następnie wybrać polecenie Edytuj

Na poniższej ilustracji przedstawiono zrzut ekranu przedstawiający okno Edytowanie relacji .

Screenshot of the edit relationship window.

Edytowanie relacji przy użyciu różnych metod

Korzystanie z okna dialogowego Edytowanie relacji jest bardziej przewodnikiem do edytowania relacji w usłudze Power BI i jest obecnie w wersji zapoznawczej. Podgląd danych można wyświetlić w każdej tabeli. Po wybraniu różnych kolumn okno automatycznie weryfikuje relację i oferuje odpowiednią kardynalność i wybór filtru krzyżowego.

Edytowanie relacji w okienku Właściwości to usprawnione podejście do edytowania relacji w usłudze Power BI. Wyświetlane są tylko nazwy tabel i kolumny, z których można wybrać, nie są wyświetlane podgląd danych, a wybrane opcje relacji są weryfikowane tylko po wybraniu pozycji Zastosuj zmiany. Użycie okienka Właściwości i usprawnione podejście zmniejsza liczbę zapytań generowanych podczas edytowania relacji, co może być ważne w przypadku scenariuszy danych big data, zwłaszcza w przypadku korzystania z połączeń DirectQuery. Relacje utworzone przy użyciu okienka Właściwości mogą być również bardziej zaawansowane niż relacje, które mogą być tworzone w oknie dialogowym Edytowanie relacji.

Relacje wielokrotne można również zaznaczyć w układach diagramu widoku modelu , naciskając klawisz Ctrl i wybierając więcej niż jeden wiersz, aby wybrać wiele relacji. Wspólne właściwości można edytować w okienku Właściwości i Zastosuj zmiany będą przetwarzać zmiany w jednej transakcji.

Relacje pojedyncze lub wielokrotne można również usunąć, naciskając klawisz Delete na klawiaturze. Nie można cofnąć akcji usuwania, więc okno dialogowe wyświetla monit o potwierdzenie usunięcia relacji.

Ważne

Edytowanie relacji w funkcji okienka właściwości jest obecnie dostępne w wersji zapoznawczej. Podczas obowiązywania wersji zapoznawczej funkcje i dokumentacja mogą ulec zmianie. Tę funkcję należy włączyć w programie Power BI Desktop, przechodząc do pozycji Opcje plików > i ustawienia > Opcje > w wersji zapoznawczej funkcji , a następnie w sekcji GLOBAL zaznacz pole wyboru obok okienka Relacja.

Konfigurowanie większej liczby opcji

Podczas tworzenia lub edytowania relacji można skonfigurować więcej opcji. Domyślnie program Power BI Desktop automatycznie konfiguruje więcej opcji na podstawie jego najlepszego odgadnięcia, co może być inne dla każdej relacji na podstawie danych w kolumnach.

Kardynalność

Opcja Kardynalność może mieć jedno z następujących ustawień:

Wiele do jednego (*:1): Relacja wiele do jednego jest najczęstszym, domyślnym typem relacji. Oznacza to, że kolumna w danej tabeli może zawierać więcej niż jedno wystąpienie wartości, a druga powiązana tabela, często nazywana tabelą odnośników, ma tylko jedno wystąpienie wartości.

Jeden do jednego (1:1): W relacji jeden do jednego kolumna w jednej tabeli ma tylko jedno wystąpienie określonej wartości, a druga powiązana tabela ma tylko jedno wystąpienie określonej wartości.

Jeden do wielu (1:*): W relacji jeden do wielu kolumna w jednej tabeli ma tylko jedno wystąpienie określonej wartości, a druga powiązana tabela może mieć więcej niż jedno wystąpienie wartości.

Wiele do wielu (*:*): W przypadku modeli złożonych można ustanowić relację wiele-do-wielu między tabelami, co eliminuje wymagania dotyczące unikatowych wartości w tabelach. Usuwa również wcześniejsze obejścia, takie jak wprowadzanie nowych tabel tylko w celu ustanowienia relacji. Aby uzyskać więcej informacji, zobacz Relacje z kardynalnością wiele-do-wielu.

Aby uzyskać więcej informacji o tym, kiedy zmienić kardynalność, zobacz Omówienie dodatkowych opcji.

Kierunek filtrowania krzyżowego

Opcja Kierunek filtrowania krzyżowego może mieć jedno z następujących ustawień:

Oba: w celach filtrowania obie tabele są traktowane tak, jakby były pojedynczą tabelą. Ustawienie Oba działa dobrze w przypadku pojedynczej tabeli, która zawiera wiele tabel odnośników, które ją otaczają. Przykładem jest tabela wartości rzeczywistych sprzedaży z tabelą odnośników dla jej działu. Ta konfiguracja jest często nazywana konfiguracją schematu gwiazdy (centralna tabela z kilkoma tabelami odnośników). Jeśli jednak masz co najmniej dwie tabele, które również mają tabele odnośników (z niektórymi typami), nie chcesz używać ustawienia Oba . Aby kontynuować poprzedni przykład, w tym przypadku masz również tabelę sprzedaży budżetu, która rejestruje budżet docelowy dla każdego działu. Tabela działu jest połączona zarówno z tabelą sprzedaży, jak i z tabelą budżetową. Unikaj ustawienia Oba dla tego rodzaju konfiguracji.

Pojedynczy: najbardziej typowy, domyślny kierunek, co oznacza, że opcje filtrowania w połączonych tabelach działają w tabeli, w której wartości są agregowane. W przypadku importowania dodatku Power Pivot w modelu danych programu Excel 2013 lub starszego wszystkie relacje będą miały jeden kierunek.

Aby uzyskać więcej informacji o tym, kiedy zmienić kierunek filtrowania krzyżowego, zobacz Opis dodatkowych opcji.

Aktywuj tę relację

Po zaznaczeniu ta relacja służy jako aktywna, domyślna relacja. W przypadkach, gdy istnieje więcej niż jedna relacja między dwiema tabelami, aktywna relacja umożliwia programowi Power BI Desktop automatyczne tworzenie wizualizacji zawierających obie tabele.

Aby uzyskać więcej informacji na temat tego, kiedy uaktywnić konkretną relację, zobacz Omówienie dodatkowych opcji.

Informacje o relacjach

Po połączeniu dwóch tabel z relacją możesz pracować z danymi w obu tabelach tak, jakby były one pojedynczą tabelą. Następnie nie musisz martwić się o szczegóły relacji lub spłaszczanie tych tabel w jedną tabelę przed ich zaimportowaniem. W wielu sytuacjach program Power BI Desktop może automatycznie tworzyć relacje. Jeśli jednak program Power BI Desktop nie może określić z wysokim stopniem pewności, że powinna istnieć relacja między dwiema tabelami, nie tworzy relacji automatycznie. W takim przypadku należy to zrobić.

Przejdźmy przez szybki samouczek, aby lepiej pokazać, jak działają relacje w programie Power BI Desktop.

Napiwek

Możesz ukończyć tę lekcję samodzielnie:

  1. Skopiuj następującą tabelę ProjectHours do arkusza programu Excel (z wyłączeniem tytułu), zaznacz wszystkie komórki, a następnie wybierz pozycję Wstaw>tabelę.
  2. W oknie dialogowym Tworzenie tabeli wybierz przycisk OK.
  3. Wybierz dowolną komórkę tabeli, wybierz pozycję Nazwa tabeli projektu>tabeli, a następnie wprowadź ciąg ProjectHours.
  4. Zrób to samo w przypadku tabeli CompanyProject .
  5. Zaimportuj dane przy użyciu polecenia Pobierz dane w programie Power BI Desktop. Wybierz dwie tabele jako źródło danych, a następnie wybierz pozycję Załaduj.

Pierwsza tabela, ProjectHours, jest rekordem biletów pracy, które rejestrują liczbę godzin, przez które dana osoba pracowała nad konkretnym projektem.

Czasy projektu

Bilet Przesłane przez Godzin Projekt DataSubmit
1001 Brewer, Alan 22 Niebieskie 1/1/2013
1002 Brewer, Alan 26 Czerwony 2/1/2013
1003 Ito, Shu 34 Yellow 12/4/2012
1004 Brewer, Alan 13 Orange (Pomarańczowy) 1/2/2012
1005 Bowen, Eli 29 Purpurowe 10/1/2013
1006 Bento, Nuno 35 Green (Zielony) 2/1/2013
1007 Hamilton, David 10 Yellow 10/1/2013
1008 Han, Mu 28 Orange (Pomarańczowy) 1/2/2012
1009 Ito, Shu 22 Purpurowe 2/1/2013
1010 Bowen, Eli 28 Green (Zielony) 10/1/2013
1011 Bowen, Eli 9 Niebieskie 10/15/2013

Druga tabela, CompanyProject, jest listą projektów z przypisanym priorytetem: A, B lub C.

Projekt firmy

ProjName Priorytet
Niebieskie A
Czerwony B
Green (Zielony) C
Yellow C
Purpurowe B
Orange (Pomarańczowy) C

Zwróć uwagę, że każda tabela ma kolumnę projektu. Każda nazwa ma nieco inne nazwy, ale wartości wyglądają tak samo. Ta różnica jest ważna i wkrótce wrócimy do niej.

Teraz, gdy mamy zaimportowane dwie tabele do modelu, utwórzmy raport. Pierwszą rzeczą, którą chcemy uzyskać, jest liczba godzin przesłanych według priorytetu projektu, dlatego wybieramy pozycję Priorytet i godziny w okienku Pola.

Screenshot of the Priority and Hours fields selected from the Fields pane.

Jeśli przyjrzymy się naszej tabeli na kanwie raportu, zobaczysz, że liczba godzin wynosi 256 dla każdego projektu, co jest również sumą. Oczywiście ta liczba nie jest poprawna. Dlaczego? Jest to spowodowane tym, że nie można obliczyć sumy sumy wartości z jednej tabeli (Hours in the Project table) wycinek według wartości w innej tabeli (Priority in the CompanyProject table) bez relacji między tymi dwiema tabelami.

Utwórzmy więc relację między tymi dwiema tabelami.

Pamiętasz te kolumny, które widzieliśmy w obu tabelach z nazwą projektu, ale z wartościami, które wyglądają podobnie? Użyjemy tych dwóch kolumn do utworzenia relacji między naszymi tabelami.

Dlaczego te kolumny? Cóż, jeśli przyjrzymy się kolumnie Project w tabeli ProjectHours , zobaczymy wartości takie jak Blue, Red, Yellow, Orange itd. W rzeczywistości widzimy kilka wierszy, które mają tę samą wartość. W efekcie mamy wiele wartości kolorów dla programu Project.

Jeśli przyjrzymy się kolumnie ProjName w tabeli CompanyProject , zobaczymy, że istnieje tylko jedna z wartości kolorów dla nazwy projektu. Każda wartość koloru w tej tabeli jest unikatowa i jest ważna, ponieważ możemy utworzyć relację między tymi dwiema tabelami. W tym przypadku relacja wiele do jednego. W relacji wiele-do-jednego co najmniej jedna kolumna w jednej z tabel musi zawierać unikatowe wartości. Istnieje kilka innych opcji dla niektórych relacji, które przyjrzymy się później. Na razie utwórzmy relację między kolumnami projektu w każdej z naszych dwóch tabel.

Aby utworzyć nową relację

  1. Wybierz pozycję Zarządzaj relacjami na karcie Modelowanie .

  2. W obszarze Zarządzanie relacjami wybierz pozycję Nowy , aby otworzyć okno dialogowe Tworzenie relacji , w którym możemy wybrać tabele, kolumny i inne ustawienia dla naszej relacji.

  3. Z pierwszej listy rozwijanej wybierz pozycję ProjectHours jako pierwszą tabelę, a następnie wybierz kolumnę Project . Ta strona jest częścią naszej relacji.

  4. Na drugiej liście rozwijanej aplikacja CompanyProject jest wstępnie wybrana jako druga tabela. Wybierz kolumnę ProjName . Ta strona jest jedną stroną naszego związku.

  5. Zaakceptuj wartości domyślne opcji relacji, a następnie wybierz przycisk OK.

    Screenshot of the Create relationship dialog box.

  6. W oknie dialogowym Zarządzanie relacjami wybierz pozycję Zamknij.

W interesie pełnego ujawnienia właśnie utworzono tę relację w trudny sposób. Możesz wybrać opcję Autowykrywanie w oknie dialogowym Zarządzanie relacjami . W rzeczywistości autowykrywanie automatycznie utworzyłoby relację podczas ładowania danych, jeśli obie kolumny mają taką samą nazwę.

Teraz ponownie przyjrzyjmy się tabeli na kanwie raportu.

Screenshot of the Priority and Hours fields selected from the Fields pane with new relationship.

To wygląda o wiele lepiej, prawda?

Gdy sumujemy godziny według priorytetu, program Power BI Desktop wyszukuje każde wystąpienie unikatowych wartości kolorów w tabeli odnośników CompanyProject , wyszukuje każde wystąpienie każdej z tych wartości w tabeli ProjectHours , a następnie oblicza sumę dla każdej unikatowej wartości.

Autowykrywanie może nawet nie być konieczne.

Omówienie dodatkowych opcji

Po utworzeniu relacji przy użyciu autowykrywania lub utworzenia ręcznie program Power BI Desktop automatycznie konfiguruje dodatkowe opcje na podstawie danych w tabelach. Te dodatkowe opcje relacji znajdują się w dolnej części okna dialogowego Tworzenie relacji i Edytowanie relacji .

Screenshot of the lower portion of the Create relationship dialog box showing Cardinality and Cross filter direction options.

Usługa Power BI zazwyczaj automatycznie ustawia te opcje i nie trzeba ich dostosowywać. Istnieje jednak kilka sytuacji, w których możesz chcieć samodzielnie skonfigurować te opcje.

Automatyczne aktualizacje relacji

Możesz zarządzać sposobem, w jaki usługa Power BI traktuje i automatycznie dostosowuje relacje w raportach i modelach. Aby określić sposób obsługi opcji relacji w usłudze Power BI, wybierz pozycję Opcje plików>i ustawienia>Opcje w programie Power BI Desktop, a następnie wybierz pozycję Ładowanie danych w okienku po lewej stronie. Zostanie wyświetlona opcja Relacje .

Screenshot of the Options box showing the Relationships settings in the Data Load tab.

Dostępne są trzy opcje, które można wybrać i włączyć:

  • Importuj relacje ze źródeł danych przy pierwszym ładowaniu: ta opcja jest domyślnie zaznaczona. Po wybraniu usługi Power BI sprawdza relacje zdefiniowane w źródle danych, takie jak relacje klucza obcego/klucza podstawowego w magazynie danych. Jeśli takie relacje istnieją, są one dublowane w modelu danych usługi Power BI podczas początkowego ładowania danych. Ta opcja umożliwia szybkie rozpoczęcie pracy z modelem, zamiast wymagać samodzielnego znalezienia lub zdefiniowania tych relacji.

  • Aktualizuj lub usuwaj relacje podczas odświeżania danych: ta opcja jest domyślnie niezaznaczone. Jeśli go wybierzesz, usługa Power BI sprawdza zmiany w relacjach ze źródłem danych po odświeżeniu modelu semantycznego. Jeśli te relacje uległy zmianie lub zostaną usunięte, usługa Power BI odzwierciedla te zmiany we własnym modelu danych, aktualizując je lub usuwając w taki sposób, aby były zgodne.

    Ostrzeżenie

    Jeśli używasz zabezpieczeń na poziomie wiersza, które opierają się na zdefiniowanych relacjach, nie zalecamy wybrania tej opcji. Jeśli usuniesz relację, na której polegają ustawienia zabezpieczeń na poziomie wiersza, model może stać się mniej bezpieczny.

  • Autowykrywanie nowych relacji po załadowaniu danych: ta opcja jest opisana w sekcji Autowykrywanie podczas ładowania.

Przyszłe aktualizacje danych wymagają innej kardynalności

Zwykle program Power BI Desktop może automatycznie określić najlepszą kardynalność relacji. Jeśli musisz zastąpić ustawienie automatyczne, ponieważ wiesz, że dane zmienią się w przyszłości, możesz zmienić je za pomocą kontrolki Kardynalność . Przyjrzyjmy się przykładowi, w którym musimy wybrać inną kardynalność.

Tabela CompanyProjectPriority jest listą wszystkich projektów firmowych i ich priorytetem. Tabela ProjectBudget to zestaw projektów, dla których budżet został zatwierdzony.

CompanyProjectPriority

ProjName Priorytet
Niebieskie A
Czerwony B
Green (Zielony) C
Yellow C
Purpurowe B
Orange (Pomarańczowy) C

Budżet projektu

Zatwierdzone projekty BudgetAllocation AlokacjaDate
Niebieskie 40,000 12/1/2012
Czerwony 100 000 12/1/2012
Green (Zielony) 50,000 12/1/2012

Jeśli utworzymy relację między kolumną Zatwierdzone projekty w tabeli ProjectBudget i kolumną ProjectName w tabeli CompanyProjectPriority , usługa Power BI automatycznie ustawia wartość Kardynalność na jedną (1:1) i Kierunek filtrowania krzyżowego na Wartość Oba.

Screenshot of the Create relationship dialog box with Cardinality to One to one (1:1) and Cross filter direction to Both.

Powodem, dla którego usługa Power BI sprawia, że te ustawienia są spowodowane tym, że dla programu Power BI Desktop najlepszą kombinacją tych dwóch tabel jest następująca:

ProjName Priorytet BudgetAllocation AlokacjaDate
Niebieskie A 40,000 12/1/2012
Czerwony B 100 000 12/1/2012
Green (Zielony) C 50,000 12/1/2012
Yellow C

Purpurowe B

Orange (Pomarańczowy) C

Istnieje relacja jeden do jednego między dwiema tabelami, ponieważ nie ma powtarzających się wartości w kolumnie ProjName połączonej tabeli. Kolumna ProjName jest unikatowa, ponieważ każda wartość występuje tylko raz, dlatego wiersze z dwóch tabel można łączyć bezpośrednio bez duplikowania.

Załóżmy jednak, że wiesz, że dane zmienią się przy następnym odświeżeniu. Odświeżona wersja tabeli ProjectBudget zawiera teraz dodatkowe wiersze dla projektów Niebieski i Czerwony:

Budżet projektu

Zatwierdzone projekty BudgetAllocation AlokacjaDate
Niebieskie 40,000 12/1/2012
Czerwony 100 000 12/1/2012
Green (Zielony) 50,000 12/1/2012
Niebieskie 80 000 6/1/2013
Czerwony 90,000 6/1/2013

Te dodatkowe wiersze oznaczają najlepszą kombinację tych dwóch tabel w następujący sposób:

ProjName Priorytet BudgetAllocation AlokacjaDate
Niebieskie A 40,000 12/1/2012
Czerwony B 100 000 12/1/2012
Green (Zielony) C 50,000 12/1/2012
Yellow C

Purpurowe B

Orange (Pomarańczowy) C

Niebieskie A 80000 6/1/2013
Czerwony B 90000 6/1/2013

W tej nowej połączonej tabeli kolumna ProjName ma powtarzające się wartości. Dwie oryginalne tabele nie będą mieć relacji jeden do jednego po odświeżeniu tabeli. W takim przypadku, ponieważ wiemy, że przyszłe aktualizacje spowodują , że kolumna ProjName będzie miała duplikaty, chcemy ustawić wartość Kardynalność na wartość Wiele na jedną (*:1) z wieloma stronami w kolumnie ProjectBudget i jedną stroną w kolumnie CompanyProjectPriority.

Dostosowywanie kierunku filtrowania krzyżowego dla złożonego zestawu tabel i relacji

W przypadku większości relacji kierunek filtrowania krzyżowego jest ustawiony na Wartość Oba. Istnieją jednak pewne bardziej nietypowe okoliczności, w których może być konieczne ustawienie tej opcji inaczej niż domyślna. Jednym z przykładów jest zaimportowanie modelu ze starszej wersji dodatku Power Pivot, gdzie każda relacja jest ustawiona na jeden kierunek.

Ustawienie Oba umożliwia programowi Power BI Desktop traktowanie wszystkich aspektów połączonych tabel tak, jakby były one jedną tabelą. Istnieją jednak pewne sytuacje, w których program Power BI Desktop nie może ustawić kierunku filtrowania krzyżowego relacji na wartość Oba , a także zachować jednoznaczny zestaw wartości domyślnych dostępnych dla celów raportowania. Jeśli kierunek filtrowania krzyżowego relacji nie jest ustawiony na Wartość Oba, zwykle jest to spowodowane tworzeniem niejednoznaczności. Jeśli domyślne ustawienie filtrowania krzyżowego nie działa, spróbuj ustawić je na określoną tabelę lub wartość Oba.

Filtrowanie krzyżowe w jednym kierunku działa w wielu sytuacjach. Jeśli model został zaimportowany z dodatku Power Pivot w programie Excel 2013 lub starszym, wszystkie relacje zostaną ustawione na jeden kierunek. Pojedynczy kierunek oznacza, że opcje filtrowania w połączonych tabelach działają w tabeli, w której odbywa się praca agregacji. Czasami zrozumienie filtrowania krzyżowego może być nieco trudne, więc przyjrzyjmy się przykładowi.

W przypadku filtrowania krzyżowego w jednym kierunku, jeśli utworzysz raport podsumowujący godziny projektu, możesz wybrać podsumowanie (lub filtr) według tabeli CompanyProject i jej kolumny Priority lub tabeli CompanyEmployee i jej kolumny City . Jeśli jednak chcesz policzyć liczbę pracowników na projekty (mniej typowe pytanie), nie będzie działać. Uzyskasz kolumnę wartości, które są takie same. W poniższym przykładzie kierunek filtrowania krzyżowego relacji jest ustawiony na jeden kierunek: w kierunku tabeli ProjectHours . W obszarze Wartości pole Project (Projekt) ma wartość Count (Liczba):

Screenshot of the visualization tab used with the Employee and Project fields.

Specyfikacja filtru będzie przepływać z elementu CompanyProject do projectHours (jak pokazano na poniższej ilustracji), ale nie będzie przepływać do elementu CompanyEmployee.

Diagram of a cross filtering example with flow from CompanyProject to ProjectHours.

Jeśli jednak ustawisz kierunek filtrowania krzyżowego na Wartość Oba, będzie działać. Ustawienie Oba umożliwia specyfikacji filtru przepływ do wartości CompanyEmployee.

Diagram of a cross filtering example with flow both ways

Po ustawieniu kierunku filtrowania krzyżowego na Wartość Oba nasz raport jest teraz poprawny:

Screenshot of cross filtering direction set to Both.

Filtrowanie krzyżowe w obu kierunkach dobrze sprawdza się w przypadku wzorca relacji tabeli, takiego jak pokazany wcześniej wzorzec. Ten schemat jest najczęściej nazywany schematem gwiazdy, w następujący sposób:

Diagram of cross filtering both directions in star schema.

Kierunek filtrowania krzyżowego nie działa dobrze z bardziej ogólnym wzorcem często występującym w bazach danych, na przykład na poniższym diagramie:

Diagram of cross filtering in both directions on a database pattern.

Jeśli masz wzorzec tabeli podobny do tego, z pętlami, filtrowanie krzyżowe może utworzyć niejednoznaczny zestaw relacji. Jeśli na przykład zsumujesz pole z tabeli TableX, a następnie wybierzesz filtrowanie według pola w tabeli TableY, nie jest jasne, jak filtr powinien podróżować, przechodząc przez górną tabelę lub dolną tabelę. Typowym przykładem tego rodzaju wzorca jest tabela TableX jako tabela sprzedaży zawierająca dane rzeczywiste i tabela TableY jako dane budżetu. Następnie tabele w środku to tabele odnośników używane przez obie tabele, takie jak dzielenie lub region.

Podobnie jak w przypadku relacji aktywnych/nieaktywnych, program Power BI Desktop nie zezwoli na ustawienie relacji na wartość Oba , jeśli utworzy niejednoznaczność w raportach. Istnieje kilka różnych sposobów radzenia sobie z tą sytuacją. Poniżej przedstawiono dwa najbardziej typowe elementy:

  • Usuń lub oznacz relacje jako nieaktywne, aby zmniejszyć niejednoznaczność. Następnie możesz ustawić filtrowanie krzyżowe relacji jako Oba.
  • Dwukrotne przełącz tabelę (z inną nazwą po raz drugi), aby wyeliminować pętle. Dzięki temu wzorzec relacji, takich jak schemat gwiazdy. Ze schematem gwiazdy można ustawić wszystkie relacje na wartość Oba.

Nieprawidłowa aktywna relacja

Gdy program Power BI Desktop automatycznie tworzy relacje, czasami występuje więcej niż jedna relacja między dwiema tabelami. W takiej sytuacji tylko jedna z relacji ma być aktywna. Aktywna relacja służy jako relacja domyślna, dzięki czemu po wybraniu pól z dwóch różnych tabel program Power BI Desktop może automatycznie utworzyć wizualizację. Jednak w niektórych przypadkach automatycznie wybrana relacja może być nieprawidłowa. Okno dialogowe Zarządzanie relacjami umożliwia ustawienie relacji jako aktywnej lub nieaktywnej albo ustawienie aktywnej relacji w oknie dialogowym Edytowanie relacji.

Aby upewnić się, że istnieje relacja domyślna, program Power BI Desktop zezwala tylko na jedną aktywną relację między dwiema tabelami w danym momencie. W związku z tym należy najpierw ustawić bieżącą relację jako nieaktywną, a następnie ustawić relację, która ma być aktywna.

Spójrzmy na przykład. Pierwsza tabela to ProjectTickets, a druga tabela to EmployeeRole.

ProjectTickets

Bilet OpenedBy Przesłane przez Godzin Projekt DataSubmit
1001 Perham, Tom Brewer, Alan 22 Niebieskie 1/1/2013
1002 Roman, Daniel Brewer, Alan 26 Czerwony 2/1/2013
1003 Roth, Daniel Ito, Shu 34 Yellow 12/4/2012
1004 Perham, Tom Brewer, Alan 13 Orange (Pomarańczowy) 1/2/2012
1005 Roman, Daniel Bowen, Eli 29 Purpurowe 10/1/2013
1006 Roth, Daniel Bento, Nuno 35 Green (Zielony) 2/1/2013
1007 Roth, Daniel Hamilton, David 10 Yellow 10/1/2013
1008 Perham, Tom Han, Mu 28 Orange (Pomarańczowy) 1/2/2012
1009 Roman, Daniel Ito, Shu 22 Purpurowe 2/1/2013
1010 Roth, Daniel Bowen, Eli 28 Green (Zielony) 10/1/2013
1011 Perham, Tom Bowen, Eli 9 Niebieskie 10/15/2013

EmployeeRole

Pracownik Rola
Bento, Nuno Menedżer projektu
Bowen, Eli Kierownik projektu
Brewer, Alan Menedżer projektu
Hamilton, David Kierownik projektu
Han, Mu Kierownik projektu
Ito, Shu Kierownik projektu
Perham, Tom Sponsor projektu
Roman, Daniel Sponsor projektu
Roth, Daniel Sponsor projektu

Istnieją tu dwie relacje:

  • Między elementami Employee w tabeli EmployeeRole i SubmittedBy w tabeli ProjectTickets.
  • Między elementami OpenedBy w tabeli ProjectTickets i Employee w tabeli EmployeeRole.

Screenshot of a two-relationship example.

Jeśli dodamy obie relacje do modelu (najpierw OpenedBy ), w oknie dialogowym Zarządzanie relacjami zostanie wyświetlone, że opcja OpenedBy jest aktywna:

Screenshot of a OpenedBy active in the Manage relationships dialog box.

Teraz, jeśli utworzymy raport, który używa pól Role i Employee z elementu EmployeeRole, a pole Hours (Godziny) z projectTickets w wizualizacji tabeli na kanwie raportu, zobaczymy tylko sponsorów projektów, ponieważ są to jedyne, które otworzyły bilet projektu.

Screenshot shows the Employee, Role, and Hours fields selected.

Możemy zmienić aktywną relację i pobrać element SubmittedBy zamiast OpenedBy. W obszarze Zarządzanie relacjami usuń zaznaczenie relacji ProjectTickets(OpenedBy) z EmployeeRole(Employee), a następnie zaznacz relację EmployeeRole(Employee) z Project Tickets(SubmittedBy).

Screenshot of changing the active relationship in the Manage relationship dialog box.

Wyświetlanie wszystkich relacji w widoku Relacji

Czasami model ma wiele tabel i złożonych relacji między nimi. Widok relacji w programie Power BI Desktop przedstawia wszystkie relacje w modelu, ich kierunek i kardynalność w łatwym do zrozumienia i dostosowywaniu diagramie.

Aby dowiedzieć się więcej, zobacz Praca z widokiem relacji w programie Power BI Desktop.

Rozwiązywanie problemów

Ta sekcja zawiera wskazówki i informacje dotyczące rozwiązywania problemów podczas pracy z relacjami w usłudze Power BI.

Nie można określić relacji między polami

Usługa Power BI próbuje wyświetlić odpowiednie dane w wizualizacjach, wnioskowając relacje z używanego modelu. Czasami takie wnioskowanie nie jest oczywiste i może być zaskoczeniem, że w wizualizacji zostanie wyświetlony błąd wskazujący brak relacji między niektórymi kolumnami.

Aby wyjaśnić, w jaki sposób usługa Power BI określa, czy pola są powiązane, użyjmy przykładowego modelu, aby zilustrować kilka scenariuszy w poniższych sekcjach. Na poniższej ilustracji przedstawiono przykładowy model, który będziemy używać w przykładowych scenariuszach.

Screenshot of a sample model used in troubleshooting scenarios.

Scenariusz 1. Tradycyjny schemat gwiazdy i brak ograniczenia miary. Odwołując się do przykładowego modelu na poprzedniej ilustracji, przyjrzyjmy się najpierw prawej połowie obrazów z tabelami Vendor - Purchases - Product . W tym przykładzie jest tradycyjny schemat gwiazdy z tabelą Faktów (Zakupy) i dwiema tabelami Wymiarów (Product i Vendor). Relacja między tabelami wymiarów a tabelą faktów wynosi od 1 do wielu (jeden produkt odpowiada wielu zakupom, jeden dostawca odpowiada wielu zakupom). W tym typie schematu możemy odpowiedzieć na pytania, takie jak Jaka sprzedaż ma dla produktu X? i Jaka sprzedaż mamy dla dostawcy Y? i Jakie produkty sprzedaje dostawca Y?

Jeśli chcemy skorelować produkty i dostawców, możemy to zrobić, przeglądając tabelę Zakupy, aby sprawdzić, czy istnieje wpis z tym samym produktem i dostawcą. Przykładowe zapytanie może wyglądać podobnie do następującego przykładu:

Correlate Product[Color] with Vendor[Name] where CountRows(Purchases)>0

Jest where CountRows(Purchases)>0 to niejawne ograniczenie, które usługa Power BI doda, aby zapewnić zwracanie odpowiednich danych. Dzięki tej korelacji za pośrednictwem tabeli Purchases (Zakupy) możemy zwrócić pary product-Vendor, które mają co najmniej jeden wpis w tabeli faktów, pary, które mają sens z perspektywy danych. Można oczekiwać, że niesensowne kombinacje product-vendor, dla których nigdy nie było sprzedaży (która byłaby bezużyteczna do analizy) nie będzie wyświetlana.

Scenariusz 2. Podany tradycyjny schemat gwiazdy i ograniczenie miary. W poprzednim przykładzie w scenariuszu 1, jeśli użytkownik udostępnia ograniczenie w postaci kolumny podsumowanej (suma/średnia/liczba zakupów qty, na przykład) lub miarę modelu (unikatowa liczba vendID), usługa Power BI może wygenerować zapytanie w postaci następującego przykładu:

Correlate Product[Color] with Vendor[Name] where MeasureConstraint is not blank

W takim przypadku usługa Power BI próbuje zwrócić kombinacje, które mają znaczące wartości ograniczeń dostarczonych przez użytkownika (niepuste). Usługa Power BI nie musi również dodawać własnych niejawnych ograniczeń funkcji CountRows(Purchases)>0, takich jak to, co zostało zrobione w poprzednim scenariuszu 1, ponieważ ograniczenie udostępniane przez użytkownika jest wystarczające.

Scenariusz 3. Schemat niegwiazdkowy i brak ograniczenia miary. W tym scenariuszu koncentrujemy się na centrum modelu, w którym mamy tabele Sales — Product — Purchases, gdzie mamy jedną tabelę wymiarów (Product) i dwie tabele faktów (Sales, Purchases). Ponieważ ten przykład nie jest schematem gwiazdy, nie możemy odpowiedzieć na takie same pytania, jak w scenariuszu 1. Załóżmy, że staramy się skorelować relacje Zakupy i Sprzedaż, ponieważ w przypadku zakupówrelacja Wiele do 1 z produktem marelację od 1 do wielu z kolumną Sales. Sprzedaż i zakupy są pośrednio wiele do wielu. Możemy połączyć jeden produkt z wieloma zakupami i jednym produktem do wielu sprzedaży, ale nie możemy połączyć jednej sprzedaży z wieloma zakupami lub odwrotnie. Możemy połączyć tylko wiele zakupów z wieloma sprzedażami.

W takiej sytuacji, jeśli spróbujemy połączyć kolumny Purchase[VenID] i Sales[CustID] w wizualizacji, usługa Power BI nie ma konkretnego ograniczenia, które może zastosować ze względu na relację Wiele do wielu między tymi tabelami. Chociaż mogą istnieć ograniczenia niestandardowe (niekoniecznie wynikające z relacji ustanowionych w modelu), które mogą być stosowane w różnych scenariuszach, usługa Power BI nie może wywnioskować domyślnego ograniczenia wyłącznie na podstawie relacji. Jeśli usługa Power BI próbowała zwrócić wszystkie kombinacje tych dwóch tabel, spowoduje utworzenie dużego sprzężenia krzyżowego i zwrócenie nieistotnych danych. Zamiast tego usługa Power BI zgłasza błąd w wizualizacji, na przykład poniżej.

Screenshot of an error dialog when relationship can’t be inferred. Alternatively, Screenshot of an error dialog where relationship isn’t inferred.

Scenariusz 4. Schemat niegwiazdkowy i ograniczenie miary. Jeśli użyjemy przykładu ze scenariusza 3 i dodamy ograniczenie podane przez użytkownika w postaci kolumny podsumowanej (na przykład Liczba produktów[ProdID] lub miary modelu (Sales[Total Qty]), usługa Power BI może wygenerować zapytanie w postaci Skorelowanych zakupów[VenID] i Sales[CustID], gdzie miaraConstraint nie jest pusta.

W takim przypadku usługa Power BI szanuje ograniczenie użytkownika jako jedyne ograniczenie usługi Power BI, które musi mieć zastosowanie, i zwraca kombinacje, które generują niepuste wartości. Użytkownik wprowadził usługę Power BI do żądanego scenariusza, a usługa Power BI stosuje wskazówki.

Scenariusz 5. Gdy zostanie podane ograniczenie miary, ale jest częściowo powiązane z kolumnami. Istnieją przypadki, w których ograniczenie miary dostarczone przez użytkownika nie jest całkowicie powiązane ze wszystkimi kolumnami w wizualizacji. Miara modelu zawsze wiąże wszystko. Usługa Power BI traktuje ten scenariusz jako czarną skrzynkę podczas próby znalezienia relacji między kolumnami w wizualizacji i zakłada, że użytkownik wie, co robi, używając go. Jednak podsumowane kolumny w postaci sum, average i podobnych podsumowań wybranych z interfejsu użytkownika mogą być powiązane tylko z podzbiorem kolumn/tabel używanych w wizualizacji na podstawie relacji tabeli, do której należy ta kolumna. W związku z tym ograniczenie dotyczy niektórych par kolumn, ale nie wszystkich. W takim przypadku usługa Power BI próbuje znaleźć domyślne ograniczenia, które można zastosować dla kolumn, które nie są powiązane przez ograniczenie podane przez użytkownika (na przykład w scenariuszu 1). Jeśli usługa Power BI nie może znaleźć żadnych, zostanie zwrócony następujący błąd.

Screenshot of an error dialog when Power BI can’t find default constraints.

Rozwiązywanie błędów relacji

Jeśli zobaczysz komunikat Nie można określić relacji między błędem pól , możesz wykonać następujące kroki, aby spróbować rozwiązać ten błąd:

  1. Sprawdź model. Czy jest ona skonfigurowana odpowiednio dla typów pytań, na które chcesz odpowiedzieć z analizy? Czy można zmienić niektóre relacje między tabelami? Czy można uniknąć tworzenia pośredniego wiele do wielu?

    Rozważ przekonwertowanie schematu odwrotnego kształtu maszyny wirtualnej na dwie tabele i użycie bezpośredniej relacji Wiele do wielu między nimi zgodnie z opisem w temacie Stosowanie relacji wiele-wiele w programie Power BI Desktop.

  2. Dodaj ograniczenie do wizualizacji w postaci kolumny podsumowanej lub miary modelu.

  3. Jeśli kolumna podsumowana jest dodawana i nadal występuje błąd, rozważ użycie miary modelu.

Aby uzyskać więcej informacji na temat modeli i relacji, zobacz następujące artykuły: