Funkcja RELATED
Zwraca powiązaną wartość z innej tabeli.
Składnia
RELATED(<column>)
Parametry
Termin |
Definicja |
---|---|
column |
Kolumna zawierająca wartości, które mają zostać pobrane. |
Wartość zwracana
Pojedyncza wartość powiązana z bieżącym wierszem.
Uwagi
Funkcja RELATED wymaga, aby istniała relacja między bieżącą tabelą a tabelą z informacjami powiązanymi. Należy określić kolumnę zawierającą żądane dane, a funkcja śledzi istniejącą relację wiele-do-jednego w celu pobrania wartości z określonej kolumny w tabeli powiązanej.
Jeśli relacja nie istnieje, trzeba ją utworzyć. Aby uzyskać więcej informacji, zobacz temat Tworzenie relacji między dwiema tabelami.
Gdy funkcja RELATED przeprowadza wyszukiwanie, analizuje wszystkie wartości w określonej tabeli, niezależnie od wszelkich zastosowanych filtrów.
[!UWAGA]
Funkcja RELATED wymaga kontekstu wiersza; dlatego można jej używać w wyrażeniu kolumny obliczeniowej, w którym kontekst wiersza jest jednoznaczny, lub jako funkcji zagnieżdżonej w wyrażeniu używającym funkcji skanowania tabeli. Funkcja skanowania tabeli, taka jak SUMX, pobiera wartość bieżącego wiersza, a następnie skanuje inną tabelę w poszukiwaniu wystąpień tej wartości.
Przykład
W poniższym przykładzie miara Sprzedaż internetowa poza USA jest tworzona w celu utworzenia raportu sprzedaży, z którego zostanie wykluczona sprzedaż na terenie USA. Aby utworzyć tę miarę, należy przefiltrować tabelę InternetSales_USD w celu wykluczenia wszystkich danych dotyczących sprzedaży należących do kategorii United States w tabeli SalesTerritory. Kraj United States występuje w tabeli SalesTerritory 5 razy, czyli raz dla każdego z następujących regionów: Northwest, Northeast, Central, Southwest i Southeast.
Pierwsze podejście do przefiltrowania tabeli InternetSales w celu utworzenia miary mogłoby obejmować utworzenie wyrażenia filtru wyglądającego następująco:
FILTER('InternetSales_USD', 'InternetSales_USD'[SalesTerritoryKey]<>1 && 'InternetSales_USD'[SalesTerritoryKey]<>2 && 'InternetSales_USD'[SalesTerritoryKey]<>3 && 'InternetSales_USD'[SalesTerritoryKey]<>4 && 'InternetSales_USD'[SalesTerritoryKey]<>5)
Jednak to podejście jest nieintuicyjne i podatne na błędy pisowni, a ponadto może przestać działać, jeśli dowolny z istniejących regionów zostanie w przyszłości podzielony.
Lepszym podejściem będzie użycie istniejącej relacji między tabelami InternetSales_USD i SalesTerritory oraz jawne określenie, że kraj musi być inny niż United States. W tym celu należy utworzyć wyrażenie filtru podobne do następującego:
FILTER( 'InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States")
W tym wyrażeniu jest używana funkcja RELATED służąca do wyszukiwania wartości kraju w tabeli SalesTerritory, począwszy od wartości kolumny klucza (SalesTerritoryKey) w tabeli InternetSales_USD. Funkcja filtrowania używa wyniku wyszukiwania w celu ustalenia, czy wiersz z tabeli InternetSales_USD ma zostać odfiltrowany.
[!UWAGA]
Jeśli ten przykład nie działa, być może trzeba utworzyć relację między tabelami. Aby uzyskać więcej informacji, zobacz temat Relacje między tabelami.
= SUMX(FILTER( 'InternetSales_USD'
, RELATED('SalesTerritory'[SalesTerritoryCountry])
<>"United States"
)
,'InternetSales_USD'[SalesAmount_USD])
W poniższej tabeli pokazano tylko sumy dla każdego regionu, aby udowodnić, że wyrażenie filtru w mierze Sprzedaż internetowa poza USA działa zgodnie z oczekiwaniami.
Etykiety wierszy |
Sprzedaż internetowa |
Sprzedaż internetowa poza USA |
---|---|---|
Australia |
$4,999,021.84 |
$4,999,021.84 |
Canada |
$1,343,109.10 |
$1,343,109.10 |
France |
$2,490,944.57 |
$2,490,944.57 |
Germany |
$2,775,195.60 |
$2,775,195.60 |
United Kingdom |
$5,057,076.55 |
$5,057,076.55 |
United States |
$9,389,479.79 |
|
Suma końcowa |
$26,054,827.45 |
$16,665,347.67 |
W poniższej tabeli pokazano, jak mógłby wyglądać ostateczny raport, gdyby ta miara została użyta w tabeli przestawnej.
Sprzedaż internetowa poza USA |
Etykiety kolumn |
|
|
|
---|---|---|---|---|
Etykiety wierszy |
Accessories |
Bikes |
Clothing |
Suma końcowa |
2005 |
|
$1,526,481.95 |
|
$1,526,481.95 |
2006 |
|
$3,554,744.04 |
|
$3,554,744.04 |
2007 |
$156,480.18 |
$5,640,106.05 |
$70,142.77 |
$5,866,729.00 |
2008 |
$228,159.45 |
$5,386,558.19 |
$102,675.04 |
$5,717,392.68 |
Suma końcowa |
$384,639.63 |
$16,107,890.23 |
$172,817.81 |
$16,665,347.67 |