INDEX
Gilt für:Berechnete Spalte
Berechnete Tabelle
Measure
visuelle Berechnung
Gibt eine Zeile an einer absoluten Position zurück, die durch den Positionsparameter innerhalb der angegebenen Partition angegeben wird, sortiert nach der angegebenen Reihenfolge. Wenn die aktuelle Partition nicht zu einer einzelnen Partition abgeleitet werden kann, werden möglicherweise mehrere Zeilen zurückgegeben.
Syntax
INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parameter
Ausdruck | Definition |
---|---|
position |
Die absolute Position (1-basiert), aus der die Daten abgerufen werden sollen: - position ist positiv: 1 ist die erste Zeile, 2 ist die zweite Zeile usw. - position negativ: -1 ist die letzte Zeile, -2 die zweite letzte Zeile usw. Wenn position außerhalb der Grenze liegt, oder null oder BLANK(), INDEX gibt eine leere Tabelle zurück. Dabei kann es sich um einen beliebigen DAX Ausdruck handeln, der einen skalaren Wert zurückgibt. |
relation |
(Optional) Ein Tabellenausdruck, aus dem die Ausgabe zurückgegeben wird.
Wenn angegeben, müssen alle Spalten in partitionBy daraus oder einer verknüpften Tabelle stammen.
Wenn nicht angegeben: - orderBy muss explizit angegeben werden.
– Alle orderBy und partitionBy Ausdrücke müssen vollqualifizierte Spaltennamen sein und aus einer einzelnen Tabelle stammen.
– Standardmäßig werden alle Spalten in orderBy und partitionBy ALLSELECTED() . |
axis |
(Optional) Eine Achse in der visuellen Form. Nur in visuellen Berechnungen verfügbar und ersetzt relation . |
orderBy |
(Optional) Eine ORDERBY() Klausel mit den Ausdrücken, die definieren, wie jede Partition sortiert wird.
Wenn nicht angegeben: - relation muss explizit angegeben werden.
– Standardmäßig wird jede Spalte in relation sortiert, die nicht bereits in partitionBy angegeben ist. |
blanks |
(Optional) Eine Aufzählung, die definiert, wie leere Werte beim Sortieren der relation oder axis behandelt werden.
Die unterstützten Werte sind:
Note, when the blanks parameter and blanks in the ORDERBY() () function on individual expressions are both specified, blanks on individual orderBy expression takes priority for the relevant orderBy expression, and orderBy expressions without blanks being specified will honor the blanks parameter on the parent function. |
partitionBy |
(Optional) Eine PARTITIONBY() Klausel, die die Spalten enthält, die definieren, wie relation partitioniert wird. Wenn sie weggelassen wird, wird relation als einzelne Partition behandelt. |
matchBy |
(Optional) Eine MATCHBY() Klausel mit den Spalten, die definieren, wie Daten übereinstimmen und die aktuelle Zeile identifiziert werden. |
reset |
(Optional) Nur in visuellen Berechnungen verfügbar. Gibt an, ob die Berechnung zurückgesetzt wird und auf welcher Ebene der Spaltenhierarchie des visuellen Shapes. Akzeptierte Werte sind: ein Feldverweis auf eine Spalte in der aktuellen visuellen Form, NONE (Standard), LOWESTPARENT , HIGHESTPARENT oder eine ganze Zahl. Das Verhalten hängt vom ganzzahligen Vorzeichen ab: – Wenn null oder ausgelassen wird, wird die Berechnung nicht zurückgesetzt. Entspricht NONE .
- Wenn die ganze Zahl positiv ist, identifiziert die ganze Zahl die Spalte beginnend mit der höchsten, unabhängig von Korn. HIGHESTPARENT entspricht 1.
- Wenn negativ, identifiziert die ganze Zahl die Spalte beginnend mit dem niedrigsten, relativ zum aktuellen Korn. LOWESTPARENT entspricht -1. |
Rückgabewert
Eine Zeile an einer absoluten Position.
Bemerkungen
Jede partitionBy
- und matchBy
Spalte muss über einen entsprechenden äußeren Wert verfügen, um die "aktuelle Partition" zu definieren, auf der sie ausgeführt werden soll, mit dem folgenden Verhalten:
- Wenn genau eine entsprechende äußere Spalte vorhanden ist, wird der Wert verwendet.
- Wenn keine entsprechende äußere Spalte vorhanden ist:
-
INDEX bestimmt zunächst alle
partitionBy
undmatchBy
Spalten, die keine entsprechende äußere Spalte aufweisen. - Für jede Kombination vorhandener Werte für diese Spalten im übergeordneten Kontext INDEXwird INDEX ausgewertet und eine Zeile zurückgegeben.
- INDEXendgültige Ausgabe ist eine Vereinigung dieser Zeilen.
-
INDEX bestimmt zunächst alle
- Wenn mehr als eine entsprechende äußere Spalte vorhanden ist, wird ein Fehler zurückgegeben.
Wenn matchBy
vorhanden ist, versucht INDEX, matchBy
und partitionBy
Spalten zu verwenden, um die Zeile zu identifizieren.
Wenn matchBy
nicht vorhanden ist und die spalten, die in orderBy
angegeben sind und partitionBy
nicht eindeutig jede Zeile in relation
identifizieren können:
- INDEX versuchen, die geringste Anzahl zusätzlicher Spalten zu finden, die erforderlich sind, um jede Zeile eindeutig zu identifizieren.
- Wenn solche Spalten gefunden werden können, fügt INDEX diese neuen Spalten automatisch an
orderBy
an, und jede Partition wird mithilfe dieser neuen Reihe von OrderBy-Spalten sortiert. - Wenn solche Spalten nicht gefunden werden können, wird ein Fehler zurückgegeben.
Eine leere Tabelle wird zurückgegeben, wenn:
- Der entsprechende äußere Wert einer PartitionBy-Spalte ist in
relation
nicht vorhanden. - Der wert
position
bezieht sich auf eine Position, die nicht innerhalb der Partition vorhanden ist.
Wenn INDEX in einer berechneten Spalte verwendet wird, die in derselben Tabelle wie relation
definiert ist und orderBy
weggelassen wird, wird ein Fehler zurückgegeben.
reset
kann nur in visuellen Berechnungen verwendet werden und kann nicht in Kombination mit orderBy
oder partitionBy
verwendet werden. Wenn reset
vorhanden ist, können axis
angegeben werden, aber relation
nicht.
Beispiel 1 – berechnete Spalte
Die folgende DAX Abfrage:
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))
Gibt die folgende Tabelle zurück:
DimDate[CalendarYear] |
---|
2005 |
Beispiel 2 – berechnete Spalte
Die folgende DAX Abfrage:
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]
Gibt die folgende Tabelle zurück:
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 |
Beispiel 3 – visuelle Berechnung
Die folgende visuelle Berechnung DAX Abfragen:
SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))
SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))
Verbessern Sie eine Tabelle so, dass sie für jeden Monat enthält:
- den Gesamtumsatz;
- der Unterschied zum ersten Monat des jeweiligen Jahres;
- und die Differenz zum ersten Monat des jeweiligen Quartals.
Der folgende Screenshot zeigt die visuelle Matrix und den ersten ausdruck der visuellen Berechnung: