Wskazówki dotyczące relacji jeden do jednego
Ten artykuł jest przeznaczony dla Ciebie jako modeler danych pracujący z programem Power BI Desktop. Zawiera on wskazówki dotyczące pracy z relacjami modelu jeden do jednego. Relację jeden do jednego można utworzyć, gdy obie tabele zawierają kolumnę wspólnych i unikatowych wartości.
Uwaga
Wprowadzenie do relacji modelu nie zostało omówione w tym artykule. Jeśli nie znasz całkowicie relacji, ich właściwości lub sposobu ich konfigurowania, zalecamy najpierw przeczytanie artykułu Relacje modelu w programie Power BI Desktop .
Ważne jest również, aby zrozumieć projekt schematu gwiazdy. Aby uzyskać więcej informacji, zobacz Omówienie schematu gwiazdy i znaczenia usługi Power BI.
Istnieją dwa scenariusze obejmujące relacje jeden do jednego:
Wymiary degeneracji: można utworzyć zwyrodnienie wymiaru z tabeli faktów.
Dane wierszy obejmują wiele tabel: jedna jednostka biznesowa lub podmiot jest ładowany jako dwie (lub więcej) tabel modelu, prawdopodobnie dlatego, że ich dane pochodzą z różnych magazynów danych. Ten scenariusz może być typowy dla tabel wymiarów. Na przykład szczegóły produktu głównego są przechowywane w operacyjnym systemie sprzedaży, a dodatkowe szczegóły produktu są przechowywane w innym źródle.
Nietypowe jest jednak powiązanie dwóch tabel faktów z relacją jeden do jednego. Jest to spowodowane tym, że obie tabele faktów musiałyby mieć taką samą wymiarowość i stopień szczegółowości. Ponadto każda tabela faktów wymaga unikatowych kolumn, aby umożliwić utworzenie relacji modelu.
Zdegeneruj wymiary
Gdy kolumny z tabeli faktów są używane do filtrowania lub grupowania, możesz rozważyć udostępnienie ich w oddzielnej tabeli. W ten sposób oddzielasz kolumny używane do filtrowania lub grupowania z tych kolumn używanych do podsumowywania wierszy faktów. To rozdzielenie może:
- Zmniejszanie miejsca do magazynowania
- Upraszczanie obliczeń modelu
- Współtworzenie ulepszonej wydajności zapytań
- Dostarczanie bardziej intuicyjnego środowiska okienka danych autorom raportów
Rozważmy źródłową tabelę sprzedaży, która przechowuje szczegóły zamówienia sprzedaży w dwóch kolumnach.
Kolumna OrderNumber przechowuje numer zamówienia, a kolumna OrderLineNumber przechowuje sekwencję wierszy w ramach zamówienia.
Na poniższym diagramie modelu zwróć uwagę, że kolumny numer zamówienia i numer wiersza zamówienia nie zostały załadowane do tabeli Sales . Zamiast tego ich wartości zostały użyte do utworzenia kolumny klucza zastępczego o nazwie SalesOrderLineID. (Wartość klucza jest obliczana przez pomnożenie numeru zamówienia przez 1000, a następnie dodanie numeru wiersza zamówienia).
Tabela Sales Order (Zamówienie sprzedaży) zawiera zaawansowane środowisko dla autorów raportów z trzema kolumnami: Sales Order (Zamówienie sprzedaży), Sales Order Line (Wiersz zamówienia sprzedaży) i Line Number (Numer wiersza). Zawiera również hierarchię. Te zasoby tabeli obsługują projekty raportów, które muszą filtrować, grupować według lub przechodzić do szczegółów zamówień i wierszy zamówienia.
Ponieważ tabela Sales Order (Zamówienie sprzedaży) pochodzi z danych sprzedaży, w każdej tabeli powinna znajdować się dokładnie taka sama liczba wierszy. Ponadto między każdą kolumną SalesOrderLineID powinny być zgodne wartości.
Dane wierszy obejmują wiele tabel
Rozważmy przykład obejmujący dwie tabele wymiarów powiązane z jednym do jednego: Product (Produkt) i Product Category (Kategoria produktu). Każda tabela reprezentuje zaimportowane dane i ma kolumnę SKU (Stock-Keeping Unit) zawierającą unikatowe wartości.
Oto częściowy diagram modelu dwóch tabel.
Pierwsza tabela nosi nazwę Product (Produkt) i zawiera trzy kolumny: Color (Kolor), Product (Produkt) i SKU (SKU). Druga tabela ma nazwę Product Category (Kategoria produktu) i zawiera dwie kolumny: Category (Kategoria) i SKU (SKU). Relacja jeden do jednego wiąże dwie kolumny jednostki SKU . Relacja jest filtruje w obu kierunkach, co zawsze dotyczy relacji jeden-do-jednego.
Aby ułatwić opisanie sposobu działania propagacji filtru relacji, diagram modelu został zmodyfikowany w celu wyświetlenia wierszy tabeli. Wszystkie przykłady w tym artykule są oparte na tych danych.
Uwaga
Nie można wyświetlić wierszy tabeli na diagramie modelu programu Power BI Desktop. W tym artykule wykonano obsługę dyskusji z jasnymi przykładami.
Szczegóły wiersza dla dwóch tabel zostały opisane na następującej liście punktowanej:
- Tabela Product (Produkt) zawiera trzy wiersze:
- SKU CL-01, T-shirt produktu , kolor zielony
- SKU CL-02, Product Jeans, Color Blue
- SKU AC-01, Product Hat, Color Blue
- Tabela Product Category (Kategoria produktu) zawiera dwa wiersze:
- SKU CL-01, Kategoria Odzież
- SKU AC-01, Akcesoria kategorii
Zwróć uwagę, że tabela Product Category (Kategoria produktu) nie zawiera wiersza dla jednostki SKU produktu CL-02. W dalszej części tego artykułu omówimy konsekwencje tego brakującego wiersza.
W okienku Dane autorzy raportów znajdą pola związane z produktem w dwóch tabelach: Product (Produkt) i Product Category (Kategoria produktu).
Zobaczmy, co się stanie, gdy pola z obu tabel zostaną dodane do wizualizacji tabeli. W tym przykładzie kolumna SKU jest pozyskiwana z tabeli Product .
Zwróć uwagę, że wartość Category dla jednostki SKU PRODUKTU CL-02 jest PUSTA. Wynika to z faktu, że w tabeli Product Category (Kategoria produktu) nie ma wiersza dla tego produktu.
Zalecenia
Jeśli to możliwe, zalecamy unikanie tworzenia relacji modelu jeden do jednego, gdy dane wierszy obejmują wiele tabel modelu. Jest to spowodowane tym, że ten projekt może:
- Współtworzenie bałaganu w okienku Danych , wyświetlanie listy większej liczby tabel niż jest to konieczne.
- Utrudnij autorom raportów znajdowanie powiązanych pól, ponieważ są one dystrybuowane między wieloma tabelami.
- Ogranicz możliwość tworzenia hierarchii, ponieważ ich poziomy muszą być oparte na kolumnach z tej samej tabeli.
- Wygeneruj nieoczekiwane wyniki, gdy nie ma pełnego dopasowania wierszy między tabelami.
Konkretne zalecenia różnią się w zależności od tego, czy relacja "jeden do jednego" jest wewnątrz grupy źródłowej lub między grupami źródłowymi. Aby uzyskać więcej informacji na temat oceny relacji, zobacz Relacje modelu w programie Power BI Desktop (ocena relacji).
Relacja "jeden do jednego" wewnątrz grupy źródłowej
Gdy istnieje relacja "jeden do jednego " wewnątrz grupy źródłowej między tabelami, zalecamy skonsolidowanie danych w jedną tabelę modelu. Odbywa się to przez scalenie zapytań Dodatku Power Query.
W poniższych krokach przedstawiono metodologię konsolidacji i modelowania danych powiązanych z jednym do jednego:
Scal zapytania: podczas łączenia dwóch zapytań należy wziąć pod uwagę kompletność danych w każdym zapytaniu. Jeśli jedno zapytanie zawiera pełny zestaw wierszy (na przykład listę główną), scal drugie zapytanie z nim. Skonfiguruj przekształcenie scalania, aby używać lewego sprzężenia zewnętrznego , który jest domyślnym typem sprzężenia. Ten typ sprzężenia gwarantuje, że zachowasz wszystkie wiersze pierwszego zapytania i uzupełnisz je wszystkimi pasującymi wierszami drugiego zapytania. Rozwiń wszystkie wymagane kolumny drugiego zapytania do pierwszego zapytania.
Wyłącz ładowanie zapytań: pamiętaj, aby wyłączyć obciążenie drugiego zapytania. W ten sposób nie zostanie załadowany jego wynik jako tabela modelu. Ta konfiguracja zmniejsza rozmiar magazynu modelu danych i pomaga usunąć okienko Dane .
W naszym przykładzie autorzy raportów znajdą teraz jedną tabelę o nazwie Product w okienku Dane . Zawiera wszystkie pola związane z produktem.
Zamień brakujące wartości: jeśli drugie zapytanie ma niedopasowane wiersze, wartości null pojawiają się w wprowadzonych z niej kolumnach. W razie potrzeby rozważ zastąpienie wartości null wartością tokenu. Zastępowanie brakujących wartości jest szczególnie ważne, gdy autorzy raportów filtrują lub grupują według wartości kolumn, ponieważ zestawy BLAN mogą być wyświetlane w wizualizacjach raportu.
W poniższej wizualizacji tabeli zwróć uwagę, że kategoria dla jednostki SKU CL-02 teraz brzmi [Niezdefiniowane]. W zapytaniu kategorie null zostały zastąpione tą wartością tekstowymi tokenu.
Tworzenie hierarchii: jeśli istnieją relacje między kolumnami teraz skonsolidowanej tabeli, rozważ utworzenie hierarchii. Dzięki temu autorzy raportów szybko zidentyfikują możliwości przechodzenia do szczegółów wizualizacji raportu.
W naszym przykładzie autorzy raportów mogą teraz używać hierarchii, która ma dwa poziomy: Kategoria i Produkt.
Jeśli chcesz, jak oddzielne tabele ułatwiają organizowanie pól, nadal zalecamy skonsolidowanie w jedną tabelę. Nadal możesz organizować pola, ale zamiast tego przy użyciu folderów wyświetlania .
W naszym przykładzie autorzy raportów mogą znaleźć pole Kategoria w folderze wyświetlania Marketing .
Jeśli nadal zdecydujesz się zdefiniować relacje "jeden do jednego" wewnątrz grupy źródłowej w modelu, jeśli to możliwe, upewnij się, że istnieją pasujące wiersze w powiązanych tabelach. Ponieważ relacja "jeden do jednego" wewnątrz grupy źródłowej jest oceniana jako zwykła relacja, problemy z integralnością danych mogą być udostępniane w wizualizacjach raportu jako BLANKs. (Przykład grupowania BLANK można zobaczyć w pierwszej wizualizacji tabeli przedstawionej w tym artykule).
Relacja jeden do jednego między grupami źródłowymi
Jeśli istnieje relacja między grupami źródłowymi między tabelami , nie ma alternatywnego projektu modelu — chyba że dane w źródłach danych zostaną wstępnie skonsolidowane. Usługa Power BI oceni relację modelu jeden do jednego jako ograniczoną relację. W związku z tym należy upewnić się, że w powiązanych tabelach istnieją pasujące wiersze, ponieważ niedopasowane wiersze zostaną wyeliminowane z wyników zapytania.
Zobaczmy, co się stanie, gdy pola z obu tabel zostaną dodane do wizualizacji tabeli, a między tabelami istnieje ograniczona relacja.
W tabeli są wyświetlane tylko dwa wiersze. Brak jednostki SKU PRODUKTU CL-02, ponieważ w tabeli Product Category nie ma pasującego wiersza.
Powiązana zawartość
Aby uzyskać więcej informacji związanych z tym artykułem, zapoznaj się z następującymi zasobami: