INDEX
Van toepassing op:berekende kolom
berekende tabel
Meting
Visuele berekening
Retourneert een rij op een absolute positie, opgegeven door de positieparameter, binnen de opgegeven partitie, gesorteerd op de opgegeven volgorde. Als 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 eerste rij, 2 is de tweede rij, enzovoort. - position is negatief: -1 is de laatste rij, -2 de tweede laatste rij, enzovoort. Wanneer position buiten de grens valt, of nul of BLANK(), INDEX retourneert een lege tabel. Dit kan elke DAX expressie zijn die een scalaire waarde retourneert. |
relation |
(Optioneel) Een tabelexpressie waaruit de uitvoer 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 orderBy - en partitionBy expressies moeten volledig gekwalificeerde kolomnamen zijn en afkomstig zijn van éé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 van de relation of axis .
De ondersteunde waarden zijn:
Opmerking: wanneer de blanks parameter en lege waarden in de ORDERBY() functie voor afzonderlijke expressies beide zijn opgegeven, blanks voor de afzonderlijke orderBy-expressie prioriteit krijgt voor de relevante orderBy-expressie en orderBy-expressies zonder dat blanks worden opgegeven, worden de blanks parameter voor de bovenliggende functie uitgevoerd. |
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 overeenkomen en de huidige rij identificeren. |
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: een veldreferentie naar een kolom in de huidige visualshape, NONE (standaard), 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. LOWESTPARENT is gelijk aan -1. |
Retourwaarde
Een rij op een absolute positie.
Opmerkingen
Elke kolom partitionBy
en matchBy
moet een overeenkomstige buitenwaarde hebben om de 'huidige partitie' te definiëren waarop moet worden uitgevoerd, met het volgende gedrag:
- Als er precies één corresponderende buitenkolom is, wordt de waarde ervan gebruikt.
- Als er geen overeenkomstige buitenste kolom is:
-
INDEX bepaalt eerst alle
partitionBy
enmatchBy
kolommen die geen bijbehorende buitenste kolom hebben. - Voor elke combinatie van bestaande waarden voor deze kolommen in de bovenliggende context van INDEXwordt INDEX geëvalueerd en wordt er een rij geretourneerd.
- INDEXuiteindelijke uitvoer is een samenvoeging van deze rijen.
-
INDEX bepaalt eerst alle
- Als er meer dan één corresponderende buitenkolom is, wordt er een fout geretourneerd.
Als matchBy
aanwezig is, probeert INDEXmatchBy
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
elke rij in relation
niet uniek kunnen identificeren:
- INDEX probeert het minste aantal extra kolommen te vinden dat nodig is om elke rij uniek te identificeren.
- Als dergelijke kolommen kunnen worden gevonden, voegt INDEX deze nieuwe kolommen automatisch toe aan
orderBy
en 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 PartitionBy-kolom bestaat niet binnen
relation
. - De
position
waarde verwijst naar een positie die niet in de partitie bestaat.
Als INDEX wordt gebruikt in een berekende kolom die is gedefinieerd in dezelfde tabel als relation
en 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:
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 elke maand bevat:
- het totale verkoopbedrag;
- het verschil met de eerste maand van het respectieve jaar;
- en het verschil met de eerste maand van het respectieve kwartaal.
In de onderstaande schermopname ziet u de visualmatrix en de eerste expressie voor het berekenen van de visual: