Lezen in het Engels

Delen via


AFSTAND

Van toepassing op:berekende kolomberekende tabelMetingVisuele berekening

Retourneert één rij die is geplaatst vóór of na de huidige rij binnen dezelfde tabel, op basis van een bepaalde offset. Als de huidige rij niet kan worden afgeleid van één rij, kunnen meerdere rijen worden geretourneerd.

Syntaxis

DAX
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parameters

Term Definitie
delta Het aantal rijen vóór (negatieve waarde) of na (positieve waarde) van waaruit de gegevens moeten worden opgehaald. Dit kan elke DAX-expressie zijn die een scalaire waarde retourneert.
relation (Optioneel) Een tabelexpressie waaruit de uitvoerrij wordt geretourneerd.
Indien opgegeven, moeten alle kolommen in partitionBy afkomstig zijn van deze of een gerelateerde tabel.
Indien weggelaten:
- orderBy moet expliciet worden opgegeven.
: alle expressies orderBy en partitionBy moeten volledig gekwalificeerde kolomnamen zijn en afkomstig zijn uit één tabel.
- Standaard ingesteld op ALLSELECTED() van alle kolommen in orderBy en partitionBy.
axis (Optioneel) Een as in de visuele shape. Alleen beschikbaar in visuele berekeningen en vervangt relation.
orderBy (Optioneel) Een ORDERBY()-component met de expressies die definiëren hoe elke partitie wordt gesorteerd.
Indien weggelaten:
- relation moet expliciet worden opgegeven.
: standaardvolgorde op elke kolom in relation die nog niet is opgegeven in partitionBy.
blanks (Optioneel) Een opsomming waarmee wordt gedefinieerd hoe lege waarden moeten worden verwerkt bij het sorteren.
Deze parameter is gereserveerd voor toekomstig gebruik.
Momenteel is de enige ondersteunde waarde STANDAARD, waarbij het gedrag voor numerieke waarden lege waarden is tussen nul en negatieve waarden. Het gedrag voor tekenreeksen is lege waarden die vóór alle tekenreeksen worden geordend, inclusief lege tekenreeksen.
partitionBy (Optioneel) Een PARTITIONBY()-component met de kolommen die bepalen hoe relation wordt gepartitioneerd.
Als u dit weglaat, wordt relation behandeld als één partitie.
matchBy (Optioneel) Een MATCHBY()-component met de kolommen die bepalen hoe gegevens moeten worden vergeleken en de huidige rij moet worden geïdentificeerd.
reset (Optioneel) Alleen beschikbaar in visuele berekeningen. Geeft aan of de berekening opnieuw wordt ingesteld en op welk niveau van de kolomhiërarchie van de visualshape. Geaccepteerde waarden zijn: NONE, LOWESTPARENT, HIGHESTPARENT of een geheel getal. Het gedrag is afhankelijk van het gehele getalteken:
- Als nul of weggelaten, wordt de berekening niet opnieuw ingesteld. Gelijk aan NONE.
- Als positief, identificeert het gehele getal de kolom die begint van het hoogste, onafhankelijk van graan. HIGHESTPARENT is gelijk aan 1.
- Als dit negatief is, identificeert het gehele getal de kolom die begint vanaf het laagste getal, ten opzichte van de huidige korrel. LAAGSTEPARENT is gelijk aan -1.

Retourwaarde

Een of meer rijen uit relation.

Opmerkingen

Met uitzondering van kolommen die door DAX-tabelfuncties worden toegevoegd, moet elke kolom in relation, wanneer matchBy niet aanwezig is, of elke kolom in matchBy en partitionBy, wanneer matchBy aanwezig is, een overeenkomstige buitenwaarde hebben om de huidige rij te bepalen waarop moet worden gewerkt, met het volgende gedrag:

  • Als er precies één corresponderende buitenkolom is, wordt de waarde ervan gebruikt.
  • Als er geen overeenkomstige buitenste kolom is, gaat u als volgt te werk:
    • OFFSET bepaalt eerst alle kolommen die geen corresponderende buitenste kolom hebben.
    • Voor elke combinatie van bestaande waarden voor deze kolommen in de bovenliggende context van OFFSET wordt OFFSET geëvalueerd en wordt een rij geretourneerd.
    • De uiteindelijke uitvoer van OFFSET is een samenvoeging van deze rijen.
  • Als er meer dan één corresponderende buitenkolom is, wordt er een fout geretourneerd.

Als alle kolommen van relationzijn toegevoegd door DAX-tabelfuncties, wordt er een fout geretourneerd.

Als matchBy aanwezig is, probeert OFFSET matchBy en partitionBy kolommen te gebruiken om de rij te identificeren.
Als matchBy niet aanwezig is en de kolommen die zijn opgegeven in orderBy en partitionBy niet uniek elke rij in relationkunnen identificeren, dan:

  • OFFSET probeert het minste aantal extra kolommen te vinden dat nodig is om elke rij uniek te identificeren.
  • Als dergelijke kolommen kunnen worden gevonden, worden deze nieuwe kolommen automatisch toegevoegd aan orderByen wordt elke partitie gesorteerd met behulp van deze nieuwe set OrderBy-kolommen.
  • Als dergelijke kolommen niet kunnen worden gevonden, wordt er een fout geretourneerd.

Er wordt een lege tabel geretourneerd als:

  • De overeenkomstige buitenwaarde van een kolom OrderBy of PartitionBy bestaat niet binnen relation.
  • De delta waarde veroorzaakt een verschuiving naar een rij die niet bestaat binnen de partitie.

Als VERSCHUIVING wordt gebruikt in een berekende kolom die is gedefinieerd in dezelfde tabel als relationen orderBy wordt weggelaten, wordt een fout geretourneerd.

reset kan alleen worden gebruikt in visuele berekeningen en kan niet worden gebruikt in combinatie met orderBy of partitionBy. Als reset aanwezig is, kan axis worden opgegeven, maar relation niet.

Voorbeeld 1: berekende kolom

De volgende DAX-query:

DAX
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]
    )
)

Retourneert een tabel met een overzicht van de totale verkoop voor elke productcategorie en elk kalenderjaar, evenals de totale verkoop voor die categorie in het vorige jaar.

Voorbeeld 2: meting

De volgende DAX-query:

DAX
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]
)

Maakt gebruik van OFFSET() in een meting om een tabel te retourneren waarin de totale verkoop voor elk kalenderjaar en de totale verkoop voor het vorige jaar wordt samengevat.

Voorbeeld 3: berekende kolom

De volgende DAX-query:

DAX
EVALUATE
ADDCOLUMNS (
    FactInternetSales,
    "Previous Sales Amount",
        SELECTCOLUMNS (
            OFFSET (
                -1,
                FactInternetSales,
                ORDERBY ( FactInternetSales[SalesAmount], DESC ),
                PARTITIONBY ( FactInternetSales[ProductKey] ),
                MATCHBY( FactInternetSales[SalesOrderNumber], FactInternetSales[SalesOrderLineNumber] )
            ),
            FactInternetSales[SalesAmount]
        )
)

Retourneert de tabel FactInternetSales met het toevoegen van een kolom, die aangeeft, voor elke verkoop, het bedrag van de vorige verkoop, van hetzelfde product, in aflopende volgorde van het verkoopbedrag, waarbij de huidige verkoop wordt geïdentificeerd door zijn SalesOrderNumber en SalesOrderLineNumber. Zonder MATCHBY retourneert de query een fout omdat er geen sleutelkolommen in de tabel FactInternetSales zijn.

Voorbeeld 4: visuele berekening

De volgende DAX-query voor visuele berekening:

DAX
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))

Retourneert het verschil in de totale verkoop tussen elke maand en de vorige binnen hetzelfde jaar.

In de onderstaande schermopname ziet u de visualmatrix en de expressie voor de berekening van de visual:

berekening van DAX-visuals

INDEX-
ORDERBY-
PARTITIONBY-
MATCHBY-
VENSTER

RIJNUMMER