INDEX
Van toepassing op:berekende kolomberekende tabelMeasureVisuele berekening
Retourneert een rij op een absolute positie, opgegeven door de positieparameter, binnen de opgegeven partitie, gesorteerd op de opgegeven volgorde. If de huidige partitie niet kan worden afgeleid van één partitie, kunnen meerdere rijen worden geretourneerd.
Syntaxis
INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parameters
Term | Definitie |
---|---|
position |
De absolute positie (op basis van 1) waaruit de gegevens moeten worden opgehaald: - position is positief: 1 is de first rij, 2 is de second rij, enzovoort. - position is negatief: -1 is de last rij, -2 de secondlast rij, enzovoort. Wanneer position buiten de grens valt, or nul, orBLANK(), INDEX retourneert een lege tabel. Dit kan elke DAX expressie zijn die een scalaire valueretourneert. |
relation |
(Optioneel) Een tabelexpressie waaruit de uitvoer 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 uit éé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 rij op een absolute positie.
Opmerkingen
Elke partitionBy
andmatchBy
kolom moet een overeenkomstige buitenste value hebben om de 'huidige partitie' te define waarop moet worden uitgevoerd, met het volgende gedrag:
- If er precies één overeenkomstige buitenkolom is, wordt de value gebruikt.
-
If er geen corresponderende buitenste kolom is:
-
INDEX bepaalt firstall
partitionBy
andmatchBy
kolommen zonder bijbehorende buitenste kolom. - Voor elke combinatie van bestaande values voor deze kolommen in de bovenliggende context van INDEXwordt INDEX geëvalueerd and een rij wordt geretourneerd.
- INDEXuiteindelijke uitvoer is een union van deze rijen.
-
INDEX bepaalt firstall
- If er meer dan één corresponderende buitenkolom is, wordt een error geretourneerd.
If
matchBy
aanwezig is, probeert INDEXmatchBy
andpartitionBy
kolommen te gebruiken om de rij te identificeren.
If
matchBy
is not aanwezig and de kolommen die zijn opgegeven in orderBy
andpartitionBy
niet elke rij in relation
kunnen identificeren:
- INDEX probeert het minste aantal extra kolommen te find dat nodig is om elke rij uniek te identificeren.
-
If dergelijke kolommen kunnen worden gevonden, voegt INDEX 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 PartitionBy kolom bestaat not binnen
relation
. - De
position
value verwijst naar een positie die not in de partitie bestaat.
If
INDEX wordt gebruikt in een berekende kolom die is gedefinieerd in dezelfde tabel als relation
andorderBy
wordt 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:
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))
Retourneert de volgende tabel:
DimDate[CalendarYear] |
---|
2005 |
Voorbeeld 2: berekende kolom
De volgende DAX query:
EVALUATE
SUMMARIZECOLUMNS (
FactInternetSales[ProductKey],
DimDate[MonthNumberOfYear],
FILTER (
VALUES(FactInternetSales[ProductKey]),
[ProductKey] < 222
),
"CurrentSales", SUM(FactInternetSales[SalesAmount]),
"LastMonthSales",
CALCULATE (
SUM(FactInternetSales[SalesAmount]),
INDEX(-1, ORDERBY(DimDate[MonthNumberOfYear]))
)
)
ORDER BY [ProductKey], [MonthNumberOfYear]
Retourneert de volgende tabel:
FactInternetSales[ProductKey] | DimDate[MonthNumberOfYear] | [CurrentSales] | [LastMonthSales] |
---|---|---|---|
214 | 1 | 5423.45 | 8047.7 |
214 | 2 | 4968.58 | 8047.7 |
214 | 3 | 5598.4 | 8047.7 |
214 | 4 | 5073.55 | 8047.7 |
214 | 5 | 5248.5 | 8047.7 |
214 | 6 | 7487.86 | 8047.7 |
214 | 7 | 7382.89 | 8047.7 |
214 | 8 | 6543.13 | 8047.7 |
214 | 9 | 6788.06 | 8047.7 |
214 | 10 | 6858.04 | 8047.7 |
214 | 11 | 8607.54 | 8047.7 |
214 | 12 | 8047.7 | 8047.7 |
217 | 1 | 5353.47 | 7767.78 |
217 | 2 | 4268.78 | 7767.78 |
217 | 3 | 5773.35 | 7767.78 |
217 | 4 | 5738.36 | 7767.78 |
217 | 5 | 6158.24 | 7767.78 |
217 | 6 | 6998 | 7767.78 |
217 | 7 | 5563.41 | 7767.78 |
217 | 8 | 5913.31 | 7767.78 |
217 | 9 | 5913.31 | 7767.78 |
217 | 10 | 6823.05 | 7767.78 |
217 | 11 | 6683.09 | 7767.78 |
217 | 12 | 7767.78 | 7767.78 |
Voorbeeld 3: visuele berekening
De volgende visuele berekening DAX query's:
SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))
SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))
Verbeter een tabel zodat deze contains, voor elke month:
- het totale verkoopbedrag;
- het verschil met de firstmonth van de respectieve year;
- and het verschil met de firstmonth van de respectieve quarter.
In de onderstaande schermopname ziet u de visualmatrix and de first visuele berekeningsexpressie: