Jedną z najbardziej zaawansowanych funkcji w dodatku Power Pivot jest możliwość tworzenia relacji między tabelami, a następnie używania powiązanych tabel do wyszukiwania lub filtrowania powiązanych danych. Powiązane wartości można pobierać z tabel przy użyciu języka formuł udostępnionego w dodatku Power Pivot, wyrażeń analizy danych (DAX). W języku DAX jest używany model relacyjny, dlatego można łatwo i dokładnie pobrać powiązane lub odpowiadające im wartości w innej tabeli lub kolumnie. Jeśli znasz funkcję WYSZUKAJ.PIONOWO w programie Excel, ta funkcja w dodatku Power Pivot jest podobna, ale znacznie łatwiejsza do zaimplementowania.
Można tworzyć formuły do wyszukiwania 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, które są dostępne do wyszukiwania, oraz kilka przykładów użycia tych funkcji.
Uwaga
W zależności od typu operacji odnośnika lub formuły odnośnika, której chcesz użyć, może być konieczne uprzednie utworzenie relacji między tabelami.
Opis funkcji odnośników
Możliwość wyszukiwania zgodnych lub powiązanych danych z innej tabeli jest szczególnie przydatna w sytuacjach, gdy bieżąca tabela ma tylko określony identyfikator, ale potrzebne dane (takie jak cena produktu, nazwa lub inne szczegółowe wartości) są przechowywane w powiązanej tabeli. Jest to również przydatne, gdy w innej tabeli znajduje się wiele wierszy powiązanych z bieżącym wierszem lub bieżącą wartością. Możesz na przykład łatwo pobrać całą sprzedaż związaną 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 funkcji WYSZUKAJ, która pobiera pierwszą z wielu zgodnych wartości, język DAX podąża za istniejącymi relacjami między tabelami połączonymi kluczami, aby uzyskać pojedynczą powiązaną wartość, która dokładnie odpowiada. Język DAX może również pobrać tabelę rekordów powiązanych z bieżącym rekordem.
Uwaga
Jeśli znasz relacyjne bazy danych, możesz myśleć o odnośnikach w dodatku Power Pivot tak samo jak o zagnieżdżonych podzaznaczeniach w języku Transact-SQL.
Pobieranie pojedynczej wartości pokrewnej
Funkcja RELATED zwraca pojedynczą wartość z innej tabeli powiązaną z bieżącą wartością w bieżącej tabeli. Określasz kolumnę zawierającą odpowiednie dane, a funkcja jest zgodna z istniejącymi relacjami między tabelami, aby pobrać 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 masz listę dzisiejszych przesyłek w programie Excel. Lista zawiera jednak tylko numer identyfikacyjny pracownika, numer identyfikacyjny zamówienia i numer identyfikacyjny spedytora, co utrudnia odczytanie raportu. Aby uzyskać żądane dodatkowe informacje, możesz przekonwertować tę listę na tabelę połączoną dodatku Power Pivot, a następnie utworzyć relacje z tabelami Pracownik i Odsprzedawca, dopasować identyfikator pracownika do pola EmployeeKey i odsprzedawać ID do pola ResellerKey.
Aby wyświetlić informacje odnośnika w tabeli połączonej, dodaj dwie nowe kolumny obliczeniowe z następującymi formułami:
= RELATED('Employees'[EmployeeName])
= RELATED('Resellers'[CompanyName])
Dzisiejsze wysyłki przed wyszukiwaniem
| ID_zamówienia | Idpracownika | Identyfikator odsprzedawcy |
|---|---|---|
| 100314 | 230 | 445 |
| 100315 | 15 | 445 |
| 100316 | 76 | 108 |
Tabela Employees
| Idpracownika | Pracownika | Sprzedawcy |
|---|---|---|
| 230 | Kuppa Vamsi | Modular Cycle Systems |
| 15 | Pilar Ackeman | Modular Cycle Systems |
| 76 | Kim Ralls | Skojarzone rowery |
Dzisiejsze wysyłki z odnośnikami
| ID_zamówienia | Idpracownika | Identyfikator odsprzedawcy | Pracownika | Sprzedawcy |
|---|---|---|---|---|
| 100314 | 230 | 445 | Kuppa Vamsi | Modular Cycle Systems |
| 100315 | 15 | 445 | Pilar Ackeman | Modular Cycle Systems |
| 100316 | 76 | 108 | Kim Ralls | Skojarzone rowery |
Funkcja używa relacji między tabelą połączoną a tabelami Pracownicy i Odsprzedawcy, aby uzyskać poprawną nazwę dla każdego wiersza w raporcie. Do obliczeń można także używać powiązanych wartości. Aby uzyskać więcej informacji i przykłady, zobacz RELATED, funkcja.
Pobieranie listy powiązanych wartości
Funkcja RELATEDTABLE jest zgodna z istniejącą relacją i zwraca tabelę zawierającą wszystkie pasujące wiersze z określonej tabeli. Załóżmy na przykład, że chcesz sprawdzić, ile zamówień złożył każdy odsprzedawcy w tym roku. W tabeli Resellers (Odsprzedawcy) można utworzyć nową kolumnę obliczeniową zawierającą następującą formułę, która umożliwia wyszukanie rekordów dla każdego odsprzedawcy w ResellerSales_USD tabeli i zliczania pojedynczych zamówień składanych przez każdego odsprzedawcy.
=ILE.LICZB(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 formule, ponieważ w dodatku Power Pivot jest używana istniejąca relacja między tabelami). Następnie funkcja TABELA.POKR pobiera wszystkie wiersze z ResellerSales_USD tabeli powiązanej z każdym odsprzedawcą i zlicza wiersze. Jeśli między obiema tabelami nie ma relacji (bezpośredniej ani pośredniej), wszystkie wiersze zostaną pobrane z ResellerSales_USD tabeli.
W przypadku odsprzedawcy Modular Cycle Systems w naszej przykładowej bazie danych istnieją cztery zamówienia w tabeli sprzedaży, więc funkcja zwraca wartość 4. W przypadku skojarzonych rowerów odsprzedawca nie ma sprzedaży, więc funkcja zwraca wartość pustą.
| Sprzedawcy | Rekordy tego odsprzedawcy w tabeli sprzedaży |
|---|---|
| Modular Cycle Systems | Identyfikator odsprzedawcy |
| 445 | |
| 445 | |
| 445 | |
| 445 | |
| Identyfikator odsprzedawcy | |
| Skojarzone rowery |
Uwaga
Funkcja RELATEDTABLE zwraca tabelę, a nie jedną wartość, dlatego musi być użyta jako argument funkcji wykonującej operacje na tabelach. Aby uzyskać więcej informacji, zobacz RELATEDTABLE, funkcja.