Jedną z najbardziej zaawansowanych funkcji dodatku Power Pivot jest możliwość tworzenia relacji między tabelami, a następnie używania tabel pokrewnych do wyszukiwania lub filtrowania powiązanych danych. Do pobierania powiązanych wartości z tabel służy język formuł dostarczany z dodatkiem Power Pivot, język DAX (Data Analysis Expressions). Język DAX korzysta z modelu relacyjnego, dzięki czemu może łatwo i dokładnie pobierać powiązane lub odpowiadające im wartości z innej tabeli lub kolumny. Jeśli znasz funkcję WYSZUKAJ.PIONOWO w programie Excel, ta funkcja w dodatku Power Pivot jest podobna, ale znacznie łatwiejsza do wdrożenia.
Możesz utworzyć formuły wykonujące odnośniki jako część kolumny obliczeniowej lub jako część miary do użycia w tabeli przestawnej lub na wykresie przestawnym. Aby uzyskać więcej informacji, zobacz następujące tematy:
Pola obliczeniowe w dodatku Power Pivot
Kolumny obliczeniowe w dodatku Power Pivot
W tej sekcji opisano funkcje języka DAX dostępne do wyszukiwania oraz przykłady użycia tych funkcji.
Uwaga
W zależności od typu operacji wyszukiwania lub formuły wyszukiwania, której chcesz użyć, może być konieczne uprzednie utworzenie relacji między tabelami.
Opis funkcji wyszukiwania
Możliwość wyszukiwania pasujących lub pokrewnych danych z innej tabeli jest szczególnie przydatna w sytuacjach, gdy bieżąca tabela zawiera tylko pewnego rodzaju identyfikator, ale potrzebne dane (na przykład cena produktu, nazwa lub inne szczegółowe wartości) są przechowywane w tabeli pokrewnej. Jest ono również użyteczne, gdy w innej tabeli istnieje wiele wierszy powiązanych z bieżącym wierszem lub bieżącą wartością. Można na przykład łatwo pobrać wszystkie transakcje sprzedaży powiązane z określonym regionem, sklepem lub sprzedawcą.
W przeciwieństwie do funkcji wyszukiwania programu Excel, takich jak WYSZUKAJ.PIONOWO, które są oparte na tablicach, lub WYSZUKAJ, która pobiera pierwszą z wielu pasujących wartości, język DAX śledzi istniejące relacje między tabelami połączonymi kluczami, aby uzyskać jedną, powiązaną wartość, która dokładnie pasuje. Język DAX może również pobierać tabelę rekordów, które są powiązane z bieżącym rekordem.
Uwaga
Jeśli użytkownik ma doświadczenie w pracy z relacyjnymi bazami danych, może myśleć o odnośnikach w dodatku Power Pivot jak o zagnieżdżonej instrukcji podselect w języku Transact-SQL.
Pobieranie pojedynczej wartości pokrewnej
Funkcja RELATED zwraca wartość z innej tabeli powiązaną z bieżącą wartością w bieżącej tabeli. Użytkownik określa kolumnę zawierającą żądane dane, a funkcja śledzi istniejące relacje między tabelami i pobiera wartość z określonej kolumny w powiązanej tabeli. W niektórych przypadkach funkcja musi podążać za łańcuchem relacji, aby pobrać dane.
Załóżmy na przykład, że w programie Excel utworzono listę dzisiejszych przesyłek. Jednak lista zawiera tylko numer identyfikacyjny pracownika, numer identyfikacyjny zamówienia i numer identyfikacyjny spedytora, co utrudnia odczytanie raportu. Aby uzyskać potrzebne dodatkowe informacje, możesz przekonwertować tę listę na tabelę połączoną dodatku Power Pivot, a następnie utworzyć relacje z tabelami Pracownik i Odsprzedawca, dopasowując pole ID_pracownika do pola KluczPracownika oraz ID_sprzedawcy do pola KluczOdsprzedawcy.
Aby wyświetlić informacje o odnośnikach w tabeli połączonej, dodaj dwie nowe kolumny obliczeniowe zawierające następujące formuły:
= RELATED('Employees'[EmployeeName])
= RELATED('Resellers'[CompanyName])
Dzisiejsze przesyłki przed odszukaniem
| ID_zamówienia | Identyfikator pracownika | Identyfikator sprzedawcy |
|---|---|---|
| 100314 | 230 | 445 |
| 100315 | 15 | 445 |
| 100316 | 76 | 108 |
Tabela Employees
| Identyfikator pracownika | Pracownik | Odsprzedawca |
|---|---|---|
| 230 | Kuppa Vamsi | Modułowe systemy cyklowe |
| 15 | Pilar Ackeman | Modułowe systemy cyklowe |
| 76 | Kim Ralls | Powiązane rowery |
Dzisiejsze przesyłki z odnośnikami
| ID_zamówienia | Identyfikator pracownika | Identyfikator sprzedawcy | Pracownik | Odsprzedawca |
|---|---|---|---|---|
| 100314 | 230 | 445 | Kuppa Vamsi | Modułowe systemy cyklowe |
| 100315 | 15 | 445 | Pilar Ackeman | Modułowe systemy cyklowe |
| 100316 | 76 | 108 | Kim Ralls | Powiązane rowery |
Ta funkcja używa relacji między tabelą połączoną a tabelą Pracownicy i odsprzedawcy w celu uzyskania poprawnej nazwy wiersza w raporcie. W obliczeniach można również używać powiązanych wartości. Aby uzyskać więcej informacji i przykładów, zobacz temat RELATED, funkcja .
Pobieranie listy wartości pokrewnych
Funkcja RELATEDTABLE podąża za istniejącą relacją i zwraca tabelę zawierającą wszystkie pasujące wiersze z określonej tabeli. Załóżmy na przykład, że chcesz dowiedzieć się, ile zamówień złożyli poszczególni sprzedawcy w tym roku. Można utworzyć nową kolumnę obliczeniową w tabeli Odsprzedawcy, która będzie zawierać następującą formułę, która wyszukuje rekordy każdego odsprzedawcy w tabeli ResellerSales_USD i zlicza liczbę indywidualnych zamówień złożonych przez każdego odsprzedawcę.
=COUNTROWS(RELATEDTABLE(ResellerSales_USD))
W tej formule funkcja RELATEDTABLE najpierw pobiera wartość ResellerKey dla każdego odsprzedawcy w bieżącej tabeli. (Nie trzeba określać kolumny identyfikatora w żadnym miejscu formuły, ponieważ dodatek Power Pivot używa istniejącej relacji między tabelami). Następnie funkcja RELATEDTABLE pobiera wszystkie wiersze z tabeli ResellerSales_USD, które są powiązane z danym sprzedawcą, i zlicza je. Jeśli nie ma żadnej relacji (bezpośredniej lub pośredniej) między tabelami, zostaną pobrane wszystkie wiersze z ResellerSales_USD tabeli.
W przypadku odsprzedawców Modular Cycle Systems w naszej przykładowej bazie danych w tabeli sprzedaży znajdują się cztery zamówienia, więc funkcja zwraca 4. W przypadku skojarzonych rowerów odsprzedawca nie prowadzi sprzedaży, więc funkcja zwraca puste miejsce.
| Odsprzedawca | Rekordy w tabeli sprzedaży dla tego odsprzedawcy |
|---|---|
| Modułowe systemy cyklowe | Identyfikator sprzedawcy |
| 445 | |
| 445 | |
| 445 | |
| 445 | |
| Identyfikator sprzedawcy | |
| Powiązane rowery |
Uwaga
Ponieważ funkcja RELATEDTABLE zwraca tabelę, a nie pojedynczą wartość, musi być używana jako argument funkcji wykonującej operacje na tabelach. Aby uzyskać więcej informacji, zobacz opis funkcji RELATEDTABLE, funkcja RELATEDTABLE.