Partager via


OFFSET

s’applique à :colonne calculéetable calculéeMeasurecalcul visuel

Retourne une seule ligne positionnée avant or après le ligne actuelle dans la même table, par un offsetdonné. If la ligne actuelle ne peut pas être déduite à une seule ligne, plusieurs lignes peuvent être retournées.

Syntaxe

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

Paramètres

Terme Définition
delta Nombre de lignes antérieures (valuenégatives) or après (valuepositif) la ligne actuelle à partir de laquelle obtenir les données. Il peut s’agir de n’importe quelle expression DAX qui retourne une valuescalaire.
relation (Facultatif) Expression de table à partir de laquelle la ligne de sortie est retournée.
If spécifié, all colonnes dans partitionBy doivent provenir de celui-ci or une table related.
If omis :
- orderBy doit être spécifié explicitement.
: les expressions AllorderByandpartitionBy doivent être des noms de colonnes complets and proviennent d’une table unique.
: valeur par défaut ALLSELECTED() des colonnes all dans orderByandpartitionBy.
axis (Facultatif) Axe de la forme visuelle. Disponible uniquement dans les calculs visuels, and remplace relation.
orderBy (Facultatif) Clause ORDERBY() contenant les expressions qui define comment chaque partition est triée.
If omis :
- relation doit être spécifié explicitement.
: tri par défaut par chaque colonne dans relation qui est not déjà spécifiée dans partitionBy.
blanks (Facultatif) Énumération qui définit comment gérer blankvalues lors du tri.
Ce paramètre est réservé à une utilisation ultérieure.
Actuellement, la seule value prise en charge est DEFAULT, où le comportement de values numérique est blankvalues sont classés entre zéro andvaluesnégatif . Le comportement des chaînes est blankvalues sont classés avant all chaînes, y compris les chaînes vides.
partitionBy (Facultatif) Clause PARTITIONBY() contenant les colonnes qui define comment relation est partitionnée.
If omis, relation est traitée comme une partition unique.
matchBy (Facultatif) Clause MATCHBY() contenant les colonnes qui define comment faire correspondre les données and identifier la ligne actuelle.
reset (Facultatif) Disponible uniquement dans les calculs visuels. Indique if les réinitialisations de calcul, and à quel niveau de la hiérarchie de colonnes de la forme visuelle. Les values acceptés sont les suivants : NONE, LOWESTPARENT, HIGHESTPARENT, or un entier. Le comportement dépend de l’entier sign:
- If zéro or omis, le calcul ne réinitialise not. Équivalent à NONE.
- If positif, l’entier identifie la colonne à partir du grain le plus élevé, indépendamment du grain. HIGHESTPARENT équivaut à 1.
- If négatif, l’entier identifie la colonne à partir du plus bas, par rapport au grain actuel. LOWESTPARENT équivaut à -1.

Retourner value

Une or plus de lignes de relation.

Remarques

Except pour les colonnes ajoutées par DAX fonctions de table, chaque colonne dans relation, lorsque matchBy est not présente, or chaque colonne dans matchByandpartitionBy, lorsque matchBy est présente, doit avoir un value externe correspondant pour aider define la ligne actuelle sur laquelle fonctionner, avec le comportement suivant :

  • If il existe exactement une colonne externe correspondante, son value est utilisé.
  • If il n’existe aucune colonne externe correspondante, puis :
    • OFFSET détermine first déterminer all colonnes qui n’ont aucune colonne externe correspondante.
    • Pour chaque combinaison de values existantes pour ces colonnes dans le contexte parent de OFFSET, OFFSET est évaluée and une ligne est retournée.
    • OFFSETla sortie finale est une union de ces lignes.
  • If il existe plusieurs colonnes externes correspondantes, une error est retournée.

If all des colonnes de relationont été ajoutées par DAX fonctions de table, une error est retournée.

If matchBy est présente, OFFSET essaie d’utiliser des colonnes matchByandpartitionBy pour identifier la ligne. If matchBy est not présente and les colonnes spécifiées dans orderByandpartitionBy ne peuvent pas identifier de manière unique chaque ligne dans relation, puis :

  • OFFSET tenterez de find le moins de colonnes supplémentaires requises pour identifier de manière unique chaque ligne.
  • If de telles colonnes sont disponibles, OFFSET ajoute automatiquement ces nouvelles colonnes à orderBy, and chaque partition est triée à l’aide de ce nouvel ensemble de colonnes OrderBy.
  • If de telles colonnes sont introuvables, une error est retournée.

Une table vide est retournée if:

  • Le value externe correspondant d’une colonne OrderByorPartitionBy n’existe not dans relation.
  • Le deltavalue entraîne un décalage vers une ligne qui n’existe not dans la partition.

If OFFSET est utilisé dans une colonne calculée définie sur la même table que relation, andorderBy est omis, un error est retourné.

reset peuvent être utilisés uniquement dans les calculs visuels, and ne peuvent pas être utilisés en combinaison avec orderByorpartitionBy. If reset est présente, axis peut être spécifiée, mais relation ne peut pas.

Exemple 1 : colonne calculée

Requête DAX suivante :

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

Retourne un tableau qui résume le total des ventes pour chaque product catégorie andcalendaryear, ainsi que le total des ventes de cette catégorie dans le previousyear.

Exemple 2 - measure

Requête DAX suivante :

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

Utilise OFFSET() dans un measure pour retourner une table qui résume le total des ventes pour chaque calendaryearand le total des ventes pour le previousyear.

Exemple 3 : colonne calculée

Requête DAX suivante :

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

Retourne la table FactInternetSales avec l’ajout d’une colonne, qui indique, pour chaque vente, son montant de previous vente, du même product, dans l’ordre décroissant du montant des ventes, avec la vente actuelle identifiée par son SalesOrderNumber and SalesOrderLineNumber. Sans MATCHBY, la requête retourne une error, car il n’existe aucune colonne clé dans la table FactInternetSales.

Exemple 4 : calcul visuel

Le calcul visuel suivant DAX requête :

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

Retourne la différence entre les ventes totales entre chaque monthand le previous un dans le même year.

La capture d’écran ci-dessous montre la matrice visuelle and l’expression de calcul visuel :

DAX de calcul visuel

INDEX ORDERBY PARTITIONBY MATCHBY WINDOW RANK ROWNUMBER