Freigeben über


OFFSET

Gilt für:Berechnete Spalteberechnete TabelleMeasurevisuelle Berechnung

Gibt eine einzelne Zeile zurück, die entweder vor or nach der aktuellen Zeile innerhalb derselben Tabelle durch eine angegebene offsetpositioniert wird. If die aktuelle Zeile nicht zu einer einzelnen Zeile abgeleitet werden kann, können mehrere Zeilen zurückgegeben werden.

Syntax

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

Parameter

Ausdruck Definition
delta Die Anzahl der Zeilen vor (negativer value) or nach (positiver value) der aktuellen Zeile, aus der die Daten abgerufen werden sollen. Dabei kann es sich um einen beliebigen DAX Ausdruck handeln, der einen skalaren valuezurückgibt.
relation (Optional) Ein Tabellenausdruck, aus dem die Ausgabezeile zurückgegeben wird.
If angegebenen, müssen all Spalten in partitionBy daraus or einer related Tabelle stammen.
If weggelassen:
- orderBy muss explizit angegeben werden.
- AllorderByandpartitionBy Ausdrücke müssen vollqualifizierte Spaltennamen sein, and aus einer einzelnen Tabelle stammen.
– Standardmäßig werden ALLSELECTED() von all Spalten in orderByandpartitionBy.
axis (Optional) Eine Achse in der visuellen Form. Nur in visuellen Berechnungen verfügbar, and ersetzt relation.
orderBy (Optional) Eine ORDERBY() Klausel mit den Ausdrücken, die define, wie jede Partition sortiert wird.
If weggelassen:
- relation muss explizit angegeben werden.
– Standardmäßig wird jede Spalte in relation sortiert, die bereits in notangegeben partitionBy ist.
blanks (Optional) Eine Aufzählung, die definiert, wie blankvalues beim Sortieren behandelt wird.
Dieser Parameter ist für die zukünftige Verwendung reserviert.
Derzeit wird die einzige unterstützte valueDEFAULT, wobei das Verhalten für numerische valuesblankvalues zwischen Null and negativen valuessortiert werden. Das Verhalten für Zeichenfolgen wird blankvalues vor all Zeichenfolgen sortiert, einschließlich leerer Zeichenfolgen.
partitionBy (Optional) Eine PARTITIONBY() Klausel, die die Spalten enthält, die define, wie relation partitioniert werden.
If weggelassen, wird relation als einzelne Partition behandelt.
matchBy (Optional) Eine MATCHBY() Klausel, die die Spalten enthält, die define, wie Daten übereinstimmen, and die aktuelle Zeile identifizieren.
reset (Optional) Nur in visuellen Berechnungen verfügbar. Gibt an, if die Berechnung zurückgesetzt wird, and auf welcher Ebene der Spaltenhierarchie des visuellen Shapes. Akzeptierte values sind: ein Feldverweis auf eine Spalte in der aktuellen visuellen Form, NONE (Standard), LOWESTPARENT, HIGHESTPARENT, or eine ganze Zahl. Das Verhalten hängt von der ganzen Zahl sign:
- If Null or weggelassen, die Berechnung wird not zurückgesetzt. Entspricht NONE.
- If positiv, identifiziert die ganze Zahl die Spalte beginnend mit der höchsten, unabhängig von Korn. HIGHESTPARENT entspricht 1.
- If negativ, identifiziert die ganze Zahl die Spalte beginnend vom niedrigsten, relativ zum aktuellen Korn. LOWESTPARENT entspricht -1.

value zurückgeben

Eine or mehr Zeilen aus relation.

Bemerkungen

Except für Spalten, die von DAX Tabellenfunktionen hinzugefügt werden, muss jede Spalte in relation, wenn matchBy vorhanden ist, not jeder Spalte in ormatchByand, wenn partitionBy vorhanden ist, über eine entsprechende äußere matchBy verfügen, um die aktuelle Zeile zu value, auf der sie ausgeführt define werden soll, mit dem folgenden Verhalten zu unterstützen:

  • If es genau eine entsprechende äußere Spalte gibt, wird dessen value verwendet.
  • If es keine entsprechende äußere Spalte gibt, dann:
    • OFFSET bestimmt firstall Spalten ohne entsprechende äußere Spalte.
    • Für jede Kombination vorhandener values für diese Spalten im übergeordneten Kontext OFFSETwird OFFSET ausgewertet, and eine Zeile zurückgegeben wird.
    • OFFSETendgültige Ausgabe ist eine union dieser Zeilen.
  • If mehr als eine entsprechende äußere Spalte vorhanden ist, wird ein error zurückgegeben.

If all relationSpalten von DAX Tabellenfunktionen hinzugefügt wurden, wird ein error zurückgegeben.

If matchBy vorhanden ist, versucht OFFSET, matchByandpartitionBy Spalten zu verwenden, um die Zeile zu identifizieren. If matchBy ist not vorhanden, and die in orderByandpartitionBy angegebenen Spalten nicht eindeutig jede Zeile in relationidentifizieren können. Dann:

  • OFFSET versucht, die geringste Anzahl zusätzlicher Spalten zu find, die erforderlich sind, um jede Zeile eindeutig zu identifizieren.
  • If diese Spalten gefunden werden können, fügt OFFSET diese neuen Spalten automatisch an orderByan, and jede Partition mithilfe dieser neuen Gruppe von OrderBy Spalten sortiert wird.
  • If diese Spalten nicht gefunden werden können, wird ein error zurückgegeben.

Eine leere Tabelle wird ifzurückgegeben:

  • Die entsprechende äußere value einer OrderByorPartitionBy Spalte ist innerhalb notrelation vorhanden.
  • Die deltavalue bewirkt eine Verschiebung zu einer Zeile, die not innerhalb der Partition vorhanden ist.

If OFFSET wird in einer berechneten Spalte verwendet, die in derselben Tabelle wie relationdefiniert ist, andorderBy weggelassen wird, wird ein error zurückgegeben.

reset können nur in visuellen Berechnungen verwendet werden, and können nicht in Kombination mit orderByorpartitionByverwendet werden. If reset vorhanden ist, können axis angegeben werden, aber relation können nicht angegeben werden.

Beispiel 1 – berechnete Spalte

Die folgende DAX Abfrage:

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

Gibt eine Tabelle zurück, die den Gesamtumsatz für jede product Kategorie andcalendaryearsowie den Gesamtumsatz für diese Kategorie in der previousyearzusammenfasst.

Beispiel 2 – measure

Die folgende DAX Abfrage:

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

Verwendet OFFSET() in einem measure, um eine Tabelle zurückzugeben, die den Gesamtumsatz für jede calendaryearand den Gesamtumsatz für die previousyearzusammenfasst.

Beispiel 3 – berechnete Spalte

Die folgende DAX Abfrage:

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

Gibt die Tabelle "FactInternetSales" zurück, in der eine Spalte hinzugefügt wird, die für jeden Verkauf die Höhe des previous Verkaufs desselben productin absteigender Reihenfolge des Verkaufsbetrags angibt, wobei der aktuelle Verkauf durch seine SalesOrderNumber and SalesOrderLineNumber identifiziert wird. Ohne MATCHBYwürde die Abfrage eine error zurückgeben, da in der Tabelle "FactInternetSales" keine Schlüsselspalten vorhanden sind.

Beispiel 4 – visuelle Berechnung

Die folgende visuelle Berechnung DAX Abfrage:

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

Gibt die Differenz des Gesamtumsatzes zwischen den einzelnen monthand der previous innerhalb desselben yearzurück.

Der folgende Screenshot zeigt die visuelle Matrix and visuellen Berechnungsausdruck:

DAX visuelle Berechnung

INDEX ORDERBY PARTITIONBY MATCHBY WINDOW RANK ROWNUMBER