Lär dig mer om radkontext
Nu när du har skapat beräknade kolumner kan du lära dig hur deras formler utvärderas.
Formeln för en beräknad kolumn utvärderas för varje tabellrad. Dessutom utvärderas det i ett radsammanhang, vilket innebär den aktuella raden. Överväg definitionen för den beräknade kolumnen Förfalloräkenskapsår:
Due Fiscal Year =
"FY"
& YEAR('Due Date'[Due Date])
+ IF(
MONTH('Due Date'[Due Date]) <= 6,
1
)
När formeln utvärderas för varje rad returnerar referensen 'Due Date'[Due Date]
kolumnvärdet för den raden. Du kommer att se att Microsoft Excel har samma koncept för att arbeta med formler i Excel-tabeller.
Radkontexten sträcker sig dock inte utanför tabellen. Om formeln behöver referera till kolumner i andra tabeller har du två alternativ:
- Om tabellerna är relaterade, direkt eller indirekt, kan du använda
RELATED
dax-funktionen ellerRELATEDTABLE
. FunktionenRELATED
hämtar värdet på ena sidan av relationen, medanRELATEDTABLE
hämtar värden på många-sidan. FunktionenRELATEDTABLE
returnerar ett tabellobjekt. - När tabellerna inte är relaterade kan du använda
LOOKUPVALUE
DAX-funktionen.
Försök i allmänhet att använda RELATED
funktionen när det är möjligt. Den presterar vanligtvis bättre än LOOKUPVALUE
funktionen på grund av hur relations- och kolumndata lagras och indexeras.
Lägg nu till följande definition av den beräknade kolumnen i tabellen Försäljning :
Discount Amount =
(
Sales[Order Quantity]
* RELATED('Product'[List Price])
) - Sales[Sales Amount]
Den beräknade kolumndefinitionen lägger till kolumnen Rabattbelopp i tabellen Försäljning . Power BI utvärderar formeln för den beräknade kolumnen för varje rad i tabellen Sales . Värdena för kolumnerna Orderantal och Försäljningsbelopp hämtas i radkontexten. Men eftersom kolumnen Listpris tillhör tabellen Product krävs funktionen RELATED
för att hämta listprisvärdet för försäljningsprodukten.
Radkontext används när formler för beräknade kolumner utvärderas. Det används också när en klass med funktioner som kallas iteratorfunktioner används. Iteratorfunktioner ger dig flexibilitet att skapa avancerade sammanfattningar. Iteratorfunktioner beskrivs i en senare modul.