LOOKUPVALUE

gælder for:beregnet kolonneberegnet tabelberegning af målingvisualisering

Returnerer værdien for den række, der opfylder alle de kriterier, der er angivet af en eller flere søgebetingelser.

Syntaks

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

Parametre

Udtryk Definition
result_columnName Navnet på en eksisterende kolonne, der indeholder den værdi, du vil returnere. Det kan ikke være et udtryk.
search_columnName Navnet på en eksisterende kolonne. Det kan være i den samme tabel som result_columnName eller i en relateret tabel. Det kan ikke være et udtryk. Du kan angive flere par af search_columnName og search_value.
search_value Den værdi, der skal søges efter i search_columnName. Du kan angive flere par af search_columnName og search_value.
alternateResult (Valgfrit) Den værdi, der returneres, når konteksten for result_columnName filtreres ned til nul eller mere end én entydig værdi. Hvis den ikke er angivet, returnerer funktionen, når result_columnName filtreres BLANK ned til nulværdier, eller en fejl, når konteksten for result_columnName har mere end én entydig værdi.

Returværdi

Værdien af result_columnName på den række, hvor alle par af search_columnName og search_value har et nøjagtigt match.

Hvis der ikke findes et match, der opfylder alle søgeværdierne, returnerer BLANK funktionen eller alternateResult (hvis det er angivet). Funktionen returnerer med andre ord ikke en opslagsværdi, hvis kun nogle af kriterierne stemmer overens.

Hvis flere rækker svarer til søgeværdierne, og værdierne i result_columnName for disse rækker er identiske, returneres denne værdi. Men hvis result_columnName returnerer forskellige værdier, returnerer funktionen en fejl eller alternateResult (hvis det er angivet).

Bemærkninger

  • Hvis der findes en relation mellem den tabel, der indeholder resultatkolonnen, og tabeller, der indeholder søgekolonnerne, er brugen RELATED af funktionen i stedet for LOOKUPVALUE i de fleste tilfælde mere effektiv og giver bedre ydeevne.

  • Du kan angive flere par af search_columnName og search_value.

  • Parametrene search_value og alternateResult evalueres, før funktionen gentager sig gennem rækkerne i søgetabellen.

  • Når den evalueres i en rækkekontekst, LOOKUPVALUE udføres kontekstovergangen, f.eks CALCULATE. konvertering af den aktuelle række til filtre. I en beregnet kolonne kan dette introducere afhængigheder af andre kolonner i den samme tabel, også selvom udtrykket ikke eksplicit refererer til disse kolonner. Disse afhængigheder kan medføre cirkulære afhængighedsfejl.

  • LOOKUPVALUE fjerner filtre fra den tabel, der indeholder result_columnName, med samme funktionsmåde for fjernelse af filtre som ALL anvendt på den pågældende tabel. Filtre, der overføres fra andre tabeller via tovejsrelationer, kan stadig påvirke opslagsresultatet. Eksempel 3 viser, hvordan du fjerner kildetabellens filtre, når disse filtre ellers ville begrænse opslaget.

  • Undgå at bruge ISERROR eller IFERROR registrere en fejl, der returneres af LOOKUPVALUE. Hvis nogle input til funktionen resulterer i en fejl, når en enkelt outputværdi ikke kan bestemmes, er angivelse af en alternateResult parameter den mest pålidelige og mest effektive måde at håndtere fejlen på.

  • Parameteren alternateResult returnerer en fejl, hvis den er angivet i en beregnet kolonne i Power Pivot.

  • Denne funktion understøttes ikke til brug i DirectQuery-tilstand, når den bruges i beregnede kolonner eller RLS-regler (row-level security).

Eksempler i denne artikel kan bruges sammen med eksempelmodellen Adventure Works DW 2020 Power BI Desktop. Hvis du vil hente modellen, skal du se DAX eksempelmodel.

Eksempel 1

I dette eksempel søger vi i Average Rate efter den valuta, LOOKUPVALUE der bruges til at betale for ordren den dag, ordren blev afgivet:

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

Du skal bruge både Ordredato og Valuta for at finde middelkursen for den korrekte dato og valuta. OrderDateKey og CurrencyKey er de nøgler, der bruges til at slå Middelkurs op i tabellen Valutakurs.

Du kan bruge valutakursen til at beregne salgsbeløbet i lokal valuta med:

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

Eksempel 2

I dette eksempel bruger følgende beregnede kolonne, der er defineret i tabellen Sales, funktionen LOOKUPVALUE til at returnere kanalværdier fra tabellen Sales Order.

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

Men i dette tilfælde er det mere effektivt at bruge funktionen, da der findes en relation mellem tabellerne Sales Order og RELATED.

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

Eksempel 3

I dette eksempel skal du ændre den tværgående filterretning for relationen mellem Product[ProductKey] og Sales[ProductKey] til Begge. Dette gør det muligt for filtre på Salg at filtrere Produkt.

Følgende beregnede kolonne i Sales søger efter navnet på et fast referenceprodukt. Brug af et referenceprodukt i stedet for produktet på den aktuelle salgsrække viser, hvordan tovejsfiltre kan begrænse opslaget.

Reference Product Name =
VAR ReferenceProductKey = 528
RETURN
    LOOKUPVALUE ( 'Product'[Product], 'Product'[ProductKey], ReferenceProductKey )

Den interne kontekstovergang opretter filtre fra den aktuelle række Salg . Disse filtre overføres til Product via den tovejsrelation. For en salgsrække med en anden produktnøgle returnerer BLANK opslaget, selvom referenceproduktet findes.

Erstat formlen for den beregnede kolonne med følgende udtryk. REMOVEFILTERS rydder de salgsfiltre, der er oprettet af kontekstovergangen før opslaget:

Reference Product Name =
VAR ReferenceProductKey = 528
RETURN
    CALCULATE (
        LOOKUPVALUE ( 'Product'[Product], 'Product'[ProductKey], ReferenceProductKey ),
        REMOVEFILTERS ( Sales )
    )

Den reviderede formel returnerer referenceproduktets navn, uanset produktet på den aktuelle salgsrække. Gendan relationens oprindelige tværgående filterretning efter dette eksempel.