INDEX
gäller för:beräknad kolumn
beräknad tabell
Mått
Visuell beräkning
Returnerar en rad vid en absolut position som anges av positionsparametern inom den angivna partitionen, sorterad efter angiven ordning. Om den aktuella partitionen inte kan härledas till en enda partition kan flera rader returneras.
Syntax
INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametrar
Term | Definition |
---|---|
position |
Den absoluta position (1-baserad) som data ska hämtas från: - position är positiv: 1 är den första raden, 2 är den andra raden osv. - position är negativ: -1 är den sista raden, -2 är den andra sista raden osv. När position ligger utom gränsen, eller noll eller BLANK(), INDEX returnerar en tom tabell. Det kan vara valfritt DAX uttryck som returnerar ett skalärt värde. |
relation |
(Valfritt) Ett tabelluttryck som utdata returneras från.
Om det anges måste alla kolumner i partitionBy komma från den eller en relaterad tabell.
Om det utelämnas: - orderBy måste anges uttryckligen.
– Alla orderBy - och partitionBy uttryck måste vara fullständigt kvalificerade kolumnnamn och komma från en enda tabell.
– Standardvärdet är ALLSELECTED() för alla kolumner i orderBy och partitionBy . |
axis |
(Valfritt) En axel i den visuella formen. Endast tillgängligt i visuella beräkningar och ersätter relation . |
orderBy |
(Valfritt) En ORDERBY-sats () som innehåller de uttryck som definierar hur varje partition sorteras.
Om det utelämnas: - relation måste anges uttryckligen.
– Standardinställningen är att sortera efter varje kolumn i relation som inte redan har angetts i partitionBy . |
blanks |
(Valfritt) En uppräkning som definierar hur du hanterar tomma värden när du sorterar relation eller axis .
De värden som stöds är:
Observera att när både blanks -parametern och blankvärdena i funktionen ORDERBY() för enskilda uttryck anges, prioriteras blanks för enskilda orderBy-uttryck för det relevanta orderBy-uttrycket, och orderBy-uttryck utan att blanks anges kommer att respektera parametern blanks för den överordnade funktionen. |
partitionBy |
(Valfritt) En PARTITIONBY()-sats som innehåller kolumnerna som definierar hur relation partitioneras. Om det utelämnas behandlas relation som en enda partition. |
matchBy |
(Valfritt) En MATCHBY()-sats som innehåller kolumnerna som definierar hur du matchar data och identifierar den aktuella raden. |
reset |
(Valfritt) Endast tillgängligt i visuella beräkningar. Anger om beräkningen återställs och på vilken nivå av den visuella formens kolumnhierarki. Godkända värden är: en fältreferens till en kolumn i den aktuella visuella formen, NONE (standard), LOWESTPARENT , HIGHESTPARENT eller ett heltal. Beteendet beror på heltalstecknet: – Om noll eller utelämnas återställs inte beräkningen. Motsvarar NONE .
– Om det är positivt identifierar heltal kolumnen med början från den högsta, oberoende av korn. HIGHESTPARENT motsvarar 1.
– Om det är negativt identifierar heltal kolumnen med början från den lägsta, i förhållande till det aktuella kornet. LOWESTPARENT motsvarar -1. |
Returvärde
En rad vid en absolut position.
Anmärkningar
Varje partitionBy
och matchBy
kolumn måste ha ett motsvarande yttre värde för att definiera den "aktuella partition" som ska användas med följande beteende:
- Om det finns exakt en motsvarande yttre kolumn används dess värde.
- Om det inte finns någon motsvarande yttre kolumn:
-
INDEX avgör först alla
partitionBy
ochmatchBy
kolumner som inte har någon motsvarande yttre kolumn. - För varje kombination av befintliga värden för dessa kolumner i INDEXöverordnade kontext utvärderas INDEX och en rad returneras.
- INDEXslutliga utdata är en union av dessa rader.
-
INDEX avgör först alla
- Om det finns mer än en motsvarande yttre kolumn returneras ett fel.
Om matchBy
finns försöker INDEX använda matchBy
och partitionBy
kolumner för att identifiera raden.
Om matchBy
inte finns och kolumnerna som anges i orderBy
och partitionBy
inte unikt kan identifiera varje rad i relation
:
- INDEX försöker hitta det minsta antal ytterligare kolumner som krävs för att unikt identifiera varje rad.
- Om du hittar sådana kolumner lägger INDEX automatiskt till de nya kolumnerna i
orderBy
och varje partition sorteras med den här nya uppsättningen OrderBy-kolumner. - Om det inte går att hitta sådana kolumner returneras ett fel.
En tom tabell returneras om:
- Motsvarande yttre värde för en PartitionBy-kolumn finns inte i
relation
. - Värdet
position
refererar till en position som inte finns i partitionen.
Om INDEX används i en beräknad kolumn som definierats i samma tabell som relation
och orderBy
utelämnas returneras ett fel.
reset
kan endast användas i visuella beräkningar och kan inte användas i kombination med orderBy
eller partitionBy
. Om reset
finns kan axis
anges men relation
inte.
Exempel 1 – beräknad kolumn
Följande DAX fråga:
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))
Returnerar följande tabell:
DimDate[CalendarYear] |
---|
2005 |
Exempel 2 – beräknad kolumn
Följande DAX fråga:
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]
Returnerar följande tabell:
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 |
Exempel 3 – visuell beräkning
Följande visuella beräkning DAX frågor:
SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))
SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))
Förbättra en tabell så att den innehåller, för varje månad:
– det totala försäljningsbeloppet;
- skillnaden till den första månaden av respektive år;
- och skillnaden till den första månaden i respektive kvartal.
Skärmbilden nedan visar den visuella matrisen och det första visuella beräkningsuttrycket: