INDEKS
Dotyczy: Obliczanie kolumny obliczeniowej tabeli Obliczeniowej Obliczenie 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 |
---|---|
położenie | Położenie bezwzględne (oparte na 1), z którego można uzyskać dane: - <pozycja jest dodatnia: 1 jest pierwszym wierszem, 2 jest drugim wierszem itd. - <pozycja> jest ujemna: -1 jest ostatnim wierszem, -2 jest drugim ostatnim wierszem itd. > Gdy <pozycja> znajduje się poza granicą lub zero lub BLANK(), indeks zwróci pustą tabelę. Może to być dowolne wyrażenie języka DAX zwracające wartość skalarną. |
relacja | (Opcjonalnie) Wyrażenie tabeli, z którego są zwracane dane wyjściowe. Jeśli zostanie określony, wszystkie kolumny w <partycjiBy> muszą pochodzić z niej lub powiązanej tabeli. Jeśli pominięto: - <orderBy> musi być jawnie określony. — Wszystkie <wyrażenia orderBy> i <partitionBy> muszą być w pełni kwalifikowane nazwy kolumn i pochodzą z jednej tabeli. - Domyślnie to ALLSELECTED() wszystkich kolumn w <kolejnościBy> i <partitionBy>. |
oś | (Opcjonalnie) Oś w kształcie wizualizacji. Dostępne tylko w obliczeniach wizualnych i zamienia relację<>. |
orderBy | (Opcjonalnie) Klauzula ORDERBY() zawierająca wyrażenia definiujące sposób sortowania poszczególnych partycji. Jeśli pominięto: - <należy jawnie określić relację> . — Domyślnie kolejność według każdej kolumny w <relacji> , która nie jest jeszcze określona w <partycjiBy>. |
Puste | (Opcjonalnie) Wyliczenie, które definiuje sposób obsługi pustych wartości podczas sortowania. Ten parametr jest zarezerwowany do użytku w przyszłości. Obecnie jedyną obsługiwaną wartością jest DEFAULT, gdzie zachowanie wartości liczbowych jest wartościami pustymi, są uporządkowane między wartościami zerowym i ujemnym. Zachowanie ciągów jest puste wartości są uporządkowane przed wszystkimi ciągami, w tym pustymi ciągami. |
partitionBy | (Opcjonalnie) Klauzula PARTITIONBY() zawierająca kolumny definiujące sposób <partycjonowania relacji> . W przypadku pominięcia <relacja> jest traktowana jako pojedyncza partycja. |
matchBy | (Opcjonalnie) Klauzula MATCHBY() zawierająca kolumny definiujące sposób dopasowywania danych i identyfikowania bieżącego wiersza. |
Resetowanie | (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: NONE, LOWESTPARENT, HIGHESTPARENT lub integer. Zachowanie zależy od znaku całkowitego: — jeśli nie zostanie pominięte, obliczenie nie zostanie zresetowane. Odpowiednik NONE. - Jeśli dodatni, liczba całkowita identyfikuje kolumnę rozpoczynającą się od najwyższego, niezależnego od ziarna. ELEMENT HIGHESTPARENT jest odpowiednikiem wartości 1. - Jeśli ujemna, liczba całkowita identyfikuje kolumnę rozpoczynającą się od najniższej, względem bieżącego ziarna. WARTOŚĆ LOWESTPARENT jest równoważna -1. |
Wartość zwracana
Wiersz w pozycji bezwzględnej.
Uwagi
Każda kolumna <partitionBy i <matchBy>> musi mieć odpowiadającą wartość zewnętrzną, aby ułatwić zdefiniowanie "bieżącej partycji", 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:
- Indeks najpierw określi wszystkie <kolumny partitionBy> i <matchBy> , które nie mają odpowiedniej kolumny zewnętrznej.
- Dla każdej kombinacji istniejących wartości dla tych kolumn w kontekście nadrzędnym indeksu indeks jest obliczany i zwracany jest wiersz.
- Końcowe dane wyjściowe indeksu są częścią tych wierszy.
- Jeśli istnieje więcej niż jedna odpowiadająca kolumna zewnętrzna, zwracany jest błąd.
Jeśli <element matchBy> jest obecny, indeks spróbuje użyć <kolumn matchBy> i <partitionBy> w celu zidentyfikowania wiersza.
Jeśli <element matchBy> nie jest obecny, a kolumny określone w kolumnach <orderBy> i <partitionBy> nie mogą jednoznacznie zidentyfikować każdego wiersza w <relacji>:
- Indeks spróbuje znaleźć najmniejszą liczbę dodatkowych kolumn wymaganych do unikatowego identyfikowania każdego wiersza.
- Jeśli takie kolumny można znaleźć, indeks automatycznie dołączy te nowe kolumny do <kolumn 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 ramach <relacji>.
- <Wartość pozycji> odnosi się do pozycji, która nie istnieje w partycji.
Jeśli indeks jest używany w kolumnie obliczeniowej zdefiniowanej w tej samej tabeli co <relacja i <kolejnośćBy>> zostanie pominięty, zwracany jest błąd.
<resetowanie> można używać tylko w obliczeniach wizualnych i nie można ich używać w połączeniu z kolumnami <orderBy> lub <partitionBy>. Jeśli <resetowanie> jest obecne, oś> można określić, <ale <nie można relować>.
Przykład 1 — kolumna obliczeniowa
Następujące zapytanie języka DAX:
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))
Zwraca następującą tabelę:
DimDate[CalendarYear] |
---|
2005 |
Przykład 2 — kolumna obliczeniowa
Następujące zapytanie języka 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 | 100 | 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 | 100 | 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 zapytania języka DAX dotyczące obliczeń wizualnych:
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:
— łączną kwotę sprzedaży;
— różnicę w pierwszym miesiącu odpowiedniego roku —
oraz różnicę w pierwszym miesiącu odpowiedniego kwartału.
Poniższy zrzut ekranu przedstawia macierz wizualizacji i pierwsze wyrażenie obliczania wizualizacji:
Powiązana zawartość
PRZESUNIĘCIE
ORDERBY
PARTYCJONOWANIE WG
OKNO
RANGA
ROWNUMBER