Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:Beräknad kolumn
Beräknad tabell
Mått
Visuell beräkning
Returnerar en enskild rad som är placerad före eller efter den aktuella raden i samma tabell, med en given förskjutning. Om den aktuella raden inte kan härledas till en enskild rad kan flera rader returneras.
Syntax
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametrar
Begrepp | Definition |
---|---|
delta |
Antalet rader före (negativt värde) eller efter (positivt värde) den aktuella rad som data ska hämtas från. Det kan vara valfritt DAX uttryck som returnerar ett skalärt värde. |
relation |
(Valfritt) Ett tabelluttryck som utdataraden returneras från. Om den används i visuella beräkningar accepterar den här parametern en axel i den visuella formen.
Om det anges måste alla kolumner i partitionBy komma från den eller en relaterad tabell.
Om det utelämnas: - orderBy måste anges uttryckligen.– Alla orderBy - och partitionBy uttryck måste vara fullständigt kvalificerade kolumnnamn och komma från en enda tabell.
– Standardvärdet är ALLSELECTED() för alla kolumner i orderBy och partitionBy . |
orderBy |
(Valfritt) En ORDERBY-sats () som innehåller de uttryck som definierar hur varje partition sorteras.
Om det utelämnas: - relation måste anges uttryckligen.
– Standardinställningen är att sortera efter varje kolumn i relation som inte redan har angetts i partitionBy . |
blanks |
(Valfritt) En uppräkning som definierar hur du hanterar tomma värden när du sorterar relation eller axis .
De värden som stöds är:
Observera att när parametern blanks och blankvärdena i ORDERBYfunktionen () för enskilda uttryck båda anges, blanks prioriteras i enskilda orderBy-uttryck för det relevanta orderBy-uttrycket, och orderBy-uttryck utan blanks att anges kommer att respektera parametern blanks för den överordnade funktionen. |
partitionBy |
(Valfritt) En PARTITIONBY() sats som innehåller de kolumner som definierar hur relation partitioneras. Om det utelämnas behandlas relation som en enda partition. |
matchBy |
(Valfritt) En MATCHBY() sats som innehåller de kolumner som definierar hur du matchar data och identifierar den aktuella raden. |
reset |
(Valfritt) Endast tillgängligt i visuella beräkningar. Anger om beräkningen återställs och på vilken nivå av den visuella formens kolumnhierarki. Godkända värden är: en fältreferens till en kolumn i den aktuella visuella formen, NONE (standard), LOWESTPARENT , HIGHESTPARENT eller ett heltal. Beteendet beror på heltalstecknet: – Om noll eller utelämnas återställs inte beräkningen. Motsvarar NONE .
– Om det är positivt identifierar heltal kolumnen med början från den högsta, oberoende av korn. HIGHESTPARENT motsvarar 1.
– Om det är negativt identifierar heltal kolumnen med början från den lägsta, i förhållande till det aktuella kornet. LOWESTPARENT motsvarar -1. |
Returvärde
En eller flera rader från relation
.
Anmärkningar
Förutom kolumner som läggs till av DAX tabellfunktioner måste varje kolumn i relation
, när matchBy
inte finns eller varje kolumn i matchBy
och partitionBy
, när matchBy
finns, ha ett motsvarande yttre värde för att definiera den aktuella rad som ska användas, med följande beteende:
- Om det finns exakt en motsvarande yttre kolumn används dess värde.
- Om det inte finns någon motsvarande yttre kolumn:
- OFFSET avgör först alla kolumner som inte har någon motsvarande yttre kolumn.
- För varje kombination av befintliga värden för dessa kolumner i OFFSETöverordnade kontext utvärderas OFFSET och en rad returneras.
- OFFSETslutliga utdata är en union av dessa rader.
- Om det finns mer än en motsvarande yttre kolumn returneras ett fel.
Om alla relation
kolumner har lagts till av DAX tabellfunktioner returneras ett fel.
Om matchBy
finns försöker OFFSET använda matchBy
och partitionBy
kolumner för att identifiera raden.
Om matchBy
inte finns och kolumnerna som anges i orderBy
och partitionBy
inte unikt kan identifiera varje rad i relation
kan du:
- OFFSET försöker hitta det minsta antal ytterligare kolumner som krävs för att unikt identifiera varje rad.
- Om du hittar sådana kolumner lägger OFFSET automatiskt till de nya kolumnerna i
orderBy
och varje partition sorteras med den här nya uppsättningen OrderBy-kolumner. - Om det inte går att hitta sådana kolumner returneras ett fel.
En tom tabell returneras om:
- Motsvarande yttre värde för en OrderBy- eller PartitionBy-kolumn finns inte i
relation
. - Värdet
delta
orsakar en övergång till en rad som inte finns i partitionen.
Om OFFSET används i en beräknad kolumn som definierats i samma tabell som relation
och orderBy
utelämnas returneras ett fel.
reset
kan endast användas i visuella beräkningar och kan inte användas i kombination med orderBy
eller partitionBy
. Om reset
finns kan axis
anges men relation
inte.
Om värdet reset
för är absolut (dvs. ett positivt heltal HIGHESTPARENT
eller en fältreferens) och beräkningen utvärderas på eller över målnivån i hierarkin återställs beräkningen för varje enskilt element. Funktionen utvärderas alltså inom en partition som endast innehåller det specifika elementet.
Exempel 1 – beräknad kolumn
Följande DAX fråga:
DEFINE
VAR vRelation = SUMMARIZECOLUMNS (
DimProductCategory[EnglishProductCategoryName],
DimDate[CalendarYear],
"CurrentYearSales", SUM(FactInternetSales[SalesAmount])
)
EVALUATE
ADDCOLUMNS (
vRelation,
"PreviousYearSales",
SELECTCOLUMNS(
OFFSET (
-1,
vRelation,
ORDERBY([CalendarYear]),
PARTITIONBY([EnglishProductCategoryName])
),
[CurrentYearSales]
)
)
Returnerar en tabell som sammanfattar den totala försäljningen för varje produktkategori och kalenderår, samt den totala försäljningen för den kategorin under föregående år.
Exempel 2 – mått
Följande DAX fråga:
DEFINE
MEASURE DimProduct[CurrentYearSales] = SUM(FactInternetSales[SalesAmount])
MEASURE DimProduct[PreviousYearSales] = CALCULATE(SUM(FactInternetSales[SalesAmount]), OFFSET(-1, , ORDERBY(DimDate[CalendarYear])))
EVALUATE
SUMMARIZECOLUMNS (
DimDate[CalendarYear],
"CurrentYearSales", DimProduct[CurrentYearSales],
"PreviousYearSales", DimProduct[PreviousYearSales]
)
Använder OFFSET() i ett mått för att returnera en tabell som sammanfattar den totala försäljningen för varje kalenderår och den totala försäljningen för föregående år.
Exempel 3 – beräknad kolumn
Följande DAX fråga:
EVALUATE
ADDCOLUMNS (
FactInternetSales,
"Previous Sales Amount",
SELECTCOLUMNS (
OFFSET (
-1,
FactInternetSales,
ORDERBY ( FactInternetSales[SalesAmount], DESC ),
PARTITIONBY ( FactInternetSales[ProductKey] ),
MATCHBY( FactInternetSales[SalesOrderNumber], FactInternetSales[SalesOrderLineNumber] )
),
FactInternetSales[SalesAmount]
)
)
Returnerar tabellen FactInternetSales med att lägga till en kolumn, vilket för varje försäljning anger dess tidigare försäljningsbelopp för samma produkt, i fallande försäljningsordning, där den aktuella försäljningen identifieras av dess SalesOrderNumber och SalesOrderLineNumber. Utan MATCHBYreturnerar frågan ett fel eftersom det inte finns några nyckelkolumner i tabellen FactInternetSales.
Exempel 4 – visuell beräkning
Följande visuella beräkning DAX fråga:
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))
Returnerar skillnaden i total försäljning mellan varje månad och den föregående inom samma år.
Skärmbilden nedan visar den visuella matrisen och det visuella beräkningsuttrycket: