INDEX
Dotyczy:kolumna obliczeniowa
tabela obliczeniowa
Miara
wizualizacji
Zwraca wiersz w pozycji bezwzględnej określonej przez parametr position w określonej partycji posortowany według określonej kolejności. Jeśli nie można wywołać bieżącej partycji do pojedynczej partycji, może zostać zwróconych wiele wierszy.
Składnia
INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametry
Termin | Definicja |
---|---|
position |
Położenie bezwzględne (oparte na 1), z którego mają być uzyskiwane dane: - position jest dodatnie: 1 jest pierwszym wierszem, 2 to drugi wiersz itd. - position jest ujemny: -1 jest ostatnim wierszem, -2 jest drugim ostatnim wierszem itp. Gdy position znajduje się poza granicą, lub zero lub BLANK(), INDEX zwróci pustą tabelę. Może to być dowolne wyrażenie DAX zwracające wartość skalarną. |
relation |
(Opcjonalnie) Wyrażenie tabeli, z którego są zwracane dane wyjściowe.
Jeśli określono, wszystkie kolumny w partitionBy muszą pochodzić z niej lub powiązanej tabeli.
Jeśli pominięto: - orderBy należy jawnie określić.
— wszystkie wyrażenia orderBy i partitionBy muszą być w pełni kwalifikowane nazwy kolumn i pochodzą z jednej tabeli.
— domyślnie ALLSELECTED() wszystkich kolumn w orderBy i partitionBy . |
axis |
(Opcjonalnie) Oś w kształcie wizualizacji. Dostępne tylko w obliczeniach wizualnych i zastępuje relation . |
orderBy |
(Opcjonalnie) Klauzula ORDERBY() zawierająca wyrażenia definiujące sposób sortowania poszczególnych partycji.
Jeśli pominięto: - relation należy jawnie określić.
— domyślnie kolejność według każdej kolumny w relation , która nie jest jeszcze określona w partitionBy . |
blanks |
(Opcjonalnie) Wyliczenie, które definiuje sposób obsługi pustych wartości podczas sortowania relation lub axis .
Obsługiwane wartości to:
Uwaga, gdy parametr blanks i wartości puste w funkcji ORDERBY() () dla poszczególnych wyrażeń są określone, blanks w przypadku pojedynczego wyrażenia orderBy ma priorytet dla odpowiedniego wyrażenia orderBy, a wyrażenia orderBy bez blanks określone będą honorować blanks parametr w funkcji nadrzędnej. |
partitionBy |
(Opcjonalnie) Klauzula PARTITIONBY() zawierająca kolumny definiujące sposób partycjonowania relation . Jeśli pominięto, relation jest traktowana jako pojedyncza partycja. |
matchBy |
(Opcjonalnie) Klauzula MATCHBY() zawierająca kolumny definiujące, jak dopasować dane i zidentyfikować bieżący wiersz. |
reset |
(Opcjonalnie) Dostępne tylko w obliczeniach wizualnych. Wskazuje, czy obliczenia są resetowane i na jakim poziomie hierarchii kolumn kształtu wizualizacji. Akceptowane wartości to: odwołanie do pola do kolumny w bieżącym kształcie wizualizacji, NONE (ustawienie domyślne), LOWESTPARENT , HIGHESTPARENT lub liczba całkowita. Zachowanie zależy od znaku całkowitego: — jeśli nie zostanie pominięte, obliczenie nie zostanie zresetowane. Odpowiednik NONE .
— jeśli jest dodatnia, liczba całkowita identyfikuje kolumnę rozpoczynającą się od najwyższego, niezależnego od ziarna. HIGHESTPARENT jest równoważne 1.
— jeśli jest ujemna, liczba całkowita identyfikuje kolumnę rozpoczynającą się od najniższego, względem bieżącego ziarna. LOWESTPARENT jest równoważne -1. |
Wartość zwracana
Wiersz w pozycji bezwzględnej.
Uwagi
Każda kolumna partitionBy
i matchBy
musi mieć odpowiadającą wartość zewnętrzną, aby pomóc zdefiniować "bieżącą partycję", na której będzie działać, z następującym zachowaniem:
- Jeśli jest dokładnie jedna odpowiadająca kolumnie zewnętrznej, zostanie użyta jej wartość.
- Jeśli nie ma odpowiedniej kolumny zewnętrznej:
-
INDEX najpierw określi wszystkie kolumny
partitionBy
imatchBy
, które nie mają odpowiedniej kolumny zewnętrznej. - Dla każdej kombinacji istniejących wartości dla tych kolumn w kontekście nadrzędnym INDEXjest obliczana INDEX i zwracany jest wiersz.
- INDEXkońcowe dane wyjściowe to połączenie tych wierszy.
-
INDEX najpierw określi wszystkie kolumny
- Jeśli istnieje więcej niż jedna odpowiadająca kolumna zewnętrzna, zwracany jest błąd.
Jeśli matchBy
jest obecny, INDEX spróbuje użyć kolumn matchBy
i partitionBy
w celu zidentyfikowania wiersza.
Jeśli matchBy
nie istnieje, a kolumny określone w orderBy
i partitionBy
nie mogą jednoznacznie zidentyfikować każdego wiersza w relation
:
- INDEX spróbuje znaleźć najmniejszą liczbę dodatkowych kolumn wymaganych do unikatowego zidentyfikowania każdego wiersza.
- Jeśli takie kolumny zostaną znalezione, INDEX automatycznie dołączy te nowe kolumny do
orderBy
, a każda partycja zostanie posortowana przy użyciu tego nowego zestawu kolumn OrderBy. - Jeśli nie można odnaleźć takich kolumn, zostanie zwrócony błąd.
Pusta tabela jest zwracana, jeśli:
- Odpowiadająca zewnętrzna wartość kolumny PartitionBy nie istnieje w
relation
. - Wartość
position
odnosi się do pozycji, która nie istnieje w partycji.
Jeśli INDEX jest używana w kolumnie obliczeniowej zdefiniowanej w tej samej tabeli co relation
i orderBy
zostanie pominięta, zwracany jest błąd.
reset
można używać tylko w obliczeniach wizualnych i nie można ich używać w połączeniu z orderBy
lub partitionBy
. Jeśli reset
jest obecny, axis
można określić, ale nie można relation
.
Przykład 1 — kolumna obliczeniowa
Następujące zapytanie DAX:
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))
Zwraca następującą tabelę:
DimDate[CalendarYear] |
---|
2005 |
Przykład 2 — kolumna obliczeniowa
Następujące zapytanie DAX:
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]
Zwraca następującą 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 |
Przykład 3 — obliczanie wizualizacji
Następujące obliczenia wizualne DAX zapytania:
SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))
SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))
Rozszerz tabelę tak, aby zawierała tabelę dla każdego miesiąca:
— łączna kwota sprzedaży;
— różnica w pierwszym miesiącu odpowiedniego roku;
- i różnica w pierwszym miesiącu odpowiedniego kwartału.
Poniższy zrzut ekranu przedstawia macierz wizualizacji i pierwsze wyrażenie obliczania wizualizacji:
obliczania wizualizacji