INDEKS

Dotyczy: Obliczanie kolumny obliczeniowejtabeliobliczeniowej Miarawizualizacji

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ą.
Relacji (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>.
(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:

Obliczanie wizualizacji języka DAX

PRZESUNIĘCIE
ORDERBY
PARTYCJONOWANIE WG
OKNO
RANK
ROWNUMBER