LOOKUPVALUE

Dotyczy:kolumna obliczeniowatabela obliczeniowaMiarawizualizacji

Zwraca wartość wiersza spełniającego wszystkie kryteria określone przez co najmniej jeden warunek wyszukiwania.

Składnia

LOOKUPVALUE (
    <result_columnName>,
    <search_columnName>,
    <search_value>
    [, <search2_columnName>, <search2_value>]…
    [, <alternateResult>]
)

Parametry

Termin Definicja
result_columnName Nazwa istniejącej kolumny zawierającej wartość, którą chcesz zwrócić. Nie może to być wyrażenie.
search_columnName Nazwa istniejącej kolumny. Może znajdować się w tej samej tabeli co result_columnName lub w powiązanej tabeli. Nie może to być wyrażenie. Można określić wiele par search_columnName i search_value.
search_value Wartość do wyszukania w search_columnName. Można określić wiele par search_columnName i search_value.
alternateResult (Opcjonalnie) Wartość zwracana, gdy kontekst dla result_columnName jest filtrowany do zera lub więcej niż jednej odrębnej wartości. Jeśli nie zostanie określona, funkcja zwraca BLANK wartość, gdy result_columnName jest filtrowana do zera wartości lub błąd, gdy kontekst dla result_columnName ma więcej niż jedną odrębną wartość.

Wartość zwracana

Wartość result_columnName w wierszu, w którym wszystkie pary search_columnName i search_value mają dokładne dopasowanie.

Jeśli żadne dopasowanie nie spełnia wszystkich wartości wyszukiwania, funkcja zwraca BLANK wartość lub alternateResult (jeśli określono). Innymi słowy, funkcja nie zwraca wartości odnośnika, jeśli tylko niektóre kryteria są zgodne.

Jeśli wiele wierszy pasuje do wartości wyszukiwania, a wartości w result_columnName tych wierszach są identyczne, zwracana jest ta wartość. Jeśli result_columnName jednak zwraca inne wartości, funkcja zwraca błąd lub alternateResult (jeśli określono).

Uwagi

  • Jeśli istnieje relacja między tabelą zawierającą kolumnę wynikową i tabele zawierające kolumny wyszukiwania, w większości przypadków użycie RELATED funkcji zamiast LOOKUPVALUE jest bardziej wydajne i zapewnia lepszą wydajność.

  • Można określić wiele par search_columnName i search_value.

  • Parametry search_value i alternateResult są oceniane, zanim funkcja iteruje wiersze tabeli wyszukiwania.

  • Unikaj używania polecenia ISERROR lub IFERROR przechwytywania błędu zwróconego przez LOOKUPVALUEelement . Jeśli niektóre dane wejściowe funkcji spowodują błąd, gdy nie można określić pojedynczej wartości wyjściowej, podanie alternateResult parametru jest najbardziej niezawodnym i najwyższym sposobem obsługi błędu.

  • Parametr alternateResult zwraca błąd, jeśli określono go w kolumnie obliczeniowej dodatku Power Pivot.

  • Ta funkcja nie jest obsługiwana w trybie DirectQuery w przypadku użycia w kolumnach obliczeniowych lub regułach zabezpieczeń na poziomie wiersza.

Przykłady w tym artykule mogą być używane z przykładowym modelem Adventure Works DW 2020 Power BI Desktop. Aby uzyskać model, zobacz DAX przykładowy model.

Przykład 1

W tym przykładzie LOOKUPVALUE wyszukuje średnią stawkę dla waluty użytej do zapłaty za zamówienie w dniu złożenia zamówienia:

Exchange Rate =
LOOKUPVALUE (
    'Currency Rate'[Average Rate],
    'Currency Rate'[CurrencyKey], [CurrencyKey],
    'Currency Rate'[DateKey], [OrderDateKey]
)

Potrzebujesz zarówno daty zamówienia, jak i waluty, aby znaleźć średnią stawkę dla poprawnej daty i waluty. OrderDateKey i CurrencyKey to klucze używane do wyszukiwania średniej stawki w tabeli Kurs walutowy.

Możesz użyć kursu wymiany, aby obliczyć kwotę sprzedaży w walucie lokalnej za pomocą:

Sales Amount Local Currency =
[Sales Amount] * [Exchange Rate]

Przykład 2

W tym przykładzie poniższa kolumna obliczeniowa zdefiniowana w tabeli Sales używa funkcji LOOKUPVALUE do zwracania wartości kanału z tabeli Sales Order.

CHANNEL =
LOOKUPVALUE (
    'Sales Order'[Channel],
    'Sales Order'[SalesOrderLineKey], [SalesOrderLineKey]
)

Jednak w tym przypadku, ponieważ istnieje relacja między tabelami Sales Order (Zamówienie sprzedaży ) i Sales (Sprzedaż ), bardziej wydajne jest użycie RELATED funkcji .

CHANNEL =
RELATED ( 'Sales Order'[Channel] )