OFFSET
Van toepassing op:berekende kolomberekende tabelMeasureVisuele berekening
Retourneert één rij die wordt geplaatst vóór or na de huidige rij binnen dezelfde tabel, door een gegeven offset. If de huidige rij niet kan worden afgeleid van één rij, kunnen meerdere rijen worden geretourneerd.
Syntaxis
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parameters
Term | Definitie |
---|---|
delta |
Het aantal rijen vóór (negatieve value) or na (positieve value) de huidige rij waaruit de gegevens moeten worden opgehaald. Dit kan elke DAX expressie zijn die een scalaire valueretourneert. |
relation |
(Optioneel) Een tabelexpressie waaruit de uitvoerrij wordt geretourneerd.
If opgegeven, moeten all kolommen in partitionBy afkomstig zijn or een related tabel.
If weggelaten: - orderBy moet expliciet worden opgegeven.: All orderBy andpartitionBy expressies moeten volledig gekwalificeerde kolomnamen zijn and afkomstig zijn van één tabel.
: standaard ingesteld op ALLSELECTED() van all kolommen in orderBy andpartitionBy . |
axis |
(Optioneel) Een as in de visuele shape. Alleen beschikbaar in visuele berekeningen, and vervangt relation . |
orderBy |
(Optioneel) Een ORDERBY() component met de expressies die define hoe elke partitie wordt gesorteerd.
If weggelaten: - relation moet expliciet worden opgegeven.
: standaard wordt elke kolom in relation gerangschikt die not al is opgegeven in partitionBy . |
blanks |
(Optioneel) Een opsomming die definieert hoe blankvalues moet worden verwerkt bij het sorteren.
Deze parameter is gereserveerd voor toekomstig gebruik. Momenteel wordt de enige ondersteunde value DEFAULT , waarbij het gedrag voor numerieke values wordt blankvalues geordend tussen nul and negatieve values. Het gedrag voor tekenreeksen wordt blankvalues worden geordend voordat all tekenreeksen, inclusief lege tekenreeksen. |
partitionBy |
(Optioneel) Een PARTITIONBY() component met de kolommen die define hoe relation wordt gepartitioneerd.
If weggelaten, wordt relation behandeld als één partitie. |
matchBy |
(Optioneel) Een MATCHBY() component met de kolommen die define hoe gegevens overeenkomen and de huidige rij identificeren. |
reset |
(Optioneel) Alleen beschikbaar in visuele berekeningen. Hiermee wordt aangegeven if de berekening opnieuw wordt ingesteld and op welk niveau van de kolomhiërarchie van de visualshape. Geaccepteerde values zijn: een veldreferentie naar een kolom in de huidige visuele shape, NONE (standaard), LOWESTPARENT , HIGHESTPARENT , or een geheel getal. Het gedrag is afhankelijk van het gehele getal sign: - If nul or weggelaten, wordt de berekening not opnieuw ingesteld. Gelijk aan NONE .
- If positief, identificeert het gehele getal de kolom die begint vanaf het hoogste, onafhankelijk van graan. HIGHESTPARENT is gelijk aan 1.
- If negatief, identificeert het gehele getal de kolom die begint vanaf het laagste getal ten opzichte van de huidige korrel. LOWESTPARENT is gelijk aan -1. |
value retourneren
Een or meer rijen uit relation
.
Opmerkingen
Except voor kolommen die zijn toegevoegd door DAX tabelfuncties, moet elke kolom in relation
, wanneer matchBy
aanwezig not is, elke kolom in ormatchBy
andpartitionBy
, wanneer matchBy
aanwezig is, een overeenkomstig buitenste value hebben om de huidige rij waarop moet worden uitgevoerd te define, met het volgende gedrag:
- If er precies één overeenkomstige buitenkolom is, wordt de value gebruikt.
-
If er geen overeenkomstige buitenste kolom is, gaat u als volgt te werk:
- OFFSET bepaalt firstall kolommen zonder bijbehorende buitenste kolom.
- Voor elke combinatie van bestaande values voor deze kolommen in de bovenliggende context van OFFSETwordt OFFSET geëvalueerd and een rij wordt geretourneerd.
- OFFSETuiteindelijke uitvoer is een union van deze rijen.
- If er meer dan één corresponderende buitenkolom is, wordt een error geretourneerd.
If
all kolommen van relation
zijn toegevoegd door DAX tabelfuncties, wordt een error geretourneerd.
If
matchBy
aanwezig is, probeert OFFSETmatchBy
andpartitionBy
kolommen te gebruiken om de rij te identificeren.
If
matchBy
is not aanwezig and de kolommen die zijn opgegeven in orderBy
andpartitionBy
niet uniek elke rij in relation
kunnen identificeren, en vervolgens:
- OFFSET probeert het minste aantal extra kolommen te find dat nodig is om elke rij uniek te identificeren.
-
If dergelijke kolommen kunnen worden gevonden, voegt OFFSET deze nieuwe kolommen automatisch toe aan
orderBy
, and elke partitie wordt gesorteerd met behulp van deze nieuwe set OrderBy kolommen. - If dergelijke kolommen niet kunnen worden gevonden, wordt een error geretourneerd.
Er wordt een lege tabel geretourneerd if:
- De overeenkomstige buitenste value van een OrderByorPartitionBy kolom bestaat not binnen
relation
. - De
delta
value veroorzaakt een verschuiving naar een rij die not bestaat binnen de partitie.
If
OFFSET wordt gebruikt in een berekende kolom die is gedefinieerd in dezelfde tabel als relation
, wordt andorderBy
weggelaten, wordt een error geretourneerd.
reset
kan alleen worden gebruikt in visuele berekeningen, and kan niet worden gebruikt in combinatie met orderBy
orpartitionBy
.
If
reset
aanwezig is, kan axis
worden opgegeven, maar relation
niet.
Voorbeeld 1: berekende kolom
De volgende DAX query:
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 product categorie andcalendaryear, evenals de totale verkoop voor die categorie in de previousyear.
Voorbeeld 2: measure
De volgende DAX query:
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]
)
Gebruikt OFFSET() in een measure om een tabel te retourneren waarin de totale verkoop voor elke calendaryearand de totale verkoop voor de previousyearwordt samengevat.
Voorbeeld 3: berekende kolom
De volgende DAX query:
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 previous verkoop, van dezelfde product, in aflopende volgorde van het verkoopbedrag, waarbij de huidige verkoop wordt geïdentificeerd door het verkoopordernummer and SalesOrderLineNumber. Zonder MATCHBYretourneert de query een error omdat er geen belangrijke kolommen in de tabel FactInternetSales zijn.
Voorbeeld 4: visuele berekening
De volgende visuele berekening DAX query:
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))
Retourneert het verschil in de totale verkoop tussen elke monthand de previous één binnen hetzelfde year.
In de onderstaande schermopname ziet u de visualmatrix and de visuele berekeningsexpressie: