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 |
---|---|
positie | De absolute positie (op basis van 1) waaruit de gegevens moeten worden opgehaald: - <positie> is positief: 1 is de eerste rij, 2 is de tweede rij, enzovoort - <positie> is negatief: -1 is de laatste rij, -2 is de tweede laatste rij, enzovoort. Wanneer <de positie> zich buiten de grens bevindt, of nul, of BLANK(), retourneert INDEX een lege tabel. Dit kan elke DAX-expressie zijn die een scalaire waarde retourneert. |
relatie | (Optioneel) Een tabelexpressie waaruit de uitvoer wordt geretourneerd. Indien opgegeven, moeten alle kolommen in <partitionBy> er vandaan komen of een gerelateerde tabel. Als u dit weglaat: - <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>. |
as | (Optioneel) Een as in de visuele shape. Alleen beschikbaar in visuele berekeningen en vervangt <de relatie>. |
orderBy | (Optioneel) Een ORDERBY()-component met de expressies die definiëren hoe elke partitie wordt gesorteerd. Als u dit weglaat: - <relatie> moet expliciet worden opgegeven. - Hiermee wordt standaard elke kolom gerangschikt in <relatie> die nog niet is opgegeven in <partitionBy>. |
Blanks | (Optioneel) Een opsomming waarmee wordt gedefinieerd hoe lege waarden moeten worden verwerkt bij het sorteren. Deze parameter is gereserveerd voor toekomstig gebruik. Op dit moment is de enige ondersteunde waarde STANDAARD, waarbij het gedrag voor numerieke waarden lege waarden is tussen nul en negatieve waarden. Het gedrag voor tekenreeksen is lege waarden die vóór alle tekenreeksen worden geordend, inclusief lege tekenreeksen. |
partitionBy | (Optioneel) Een PARTITIONBY()-component met de kolommen die definiëren hoe <relatie> wordt gepartitioneerd. Als u dit weglaat, <wordt de relatie> behandeld als één partitie. |
matchBy | (Optioneel) Een MATCHBY()-component met de kolommen die bepalen hoe gegevens moeten worden vergeleken en de huidige rij moet worden geïdentificeerd. |
opnieuw instellen | (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: NONE, LOWESTPARENT, HIGHESTPARENT of een geheel getal. Het gedrag is afhankelijk van het gehele getalteken: - Als nul of weggelaten wordt, wordt de berekening niet opnieuw ingesteld. Gelijk aan NONE. - Als positief, identificeert het gehele getal de kolom die begint vanaf het hoogste, onafhankelijk van de korrel. 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. LAAGSTEPARENT is gelijk aan -1. |
Retourwaarde
Een rij op een absolute positie.
Opmerkingen
Elke <partitionBy- en <matchBy-kolom>> moeten 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> - en <matchBy-kolommen> die geen bijbehorende buitenste kolom hebben.
- Voor elke combinatie van bestaande waarden voor deze kolommen in de bovenliggende context van INDEX wordt INDEX geëvalueerd en wordt er een rij geretourneerd.
- De uiteindelijke uitvoer van INDEX is een samenvoeging van deze rijen.
- Als er meer dan één corresponderende buitenkolom is, wordt er een fout geretourneerd.
Als <matchBy> aanwezig is, probeert INDEX kolommen matchBy> en <partitionBy> te gebruiken <om de rij te identificeren.
Als <matchBy> niet aanwezig is en de kolommen die zijn opgegeven in <orderBy> en <partitionBy> , kunnen niet elke rij in <relatie> uniek 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, worden deze nieuwe kolommen automatisch toegevoegd 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 <een relatie>.
- De <positiewaarde> 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 <relationeel> 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 <het opnieuw instellen> aanwezig is, kan de as> worden opgegeven, <maar <niet de relatie>.
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 DAX-query's voor visuele berekeningen:
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 in 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: