Udostępnij za pośrednictwem


INDEX

Dotyczy:kolumna obliczeniowatabela obliczeniowaMiarawizualizacji

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:
  • DEFAULT (wartość domyślna), 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.
  • FIRSTwartości puste są zawsze uporządkowane na początku, niezależnie od kolejności sortowania rosnącego lub malejącego.
  • LASTwartości puste są zawsze uporządkowane na końcu, niezależnie od kolejności sortowania rosnącego lub malejącego.

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, HIGHESTPARENTlub 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 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 INDEXjest obliczana INDEX i zwracany jest wiersz.
    • INDEXkońcowe dane wyjściowe to połączenie tych wierszy.
  • 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

OFFSET ORDERBY PARTITIONBY WINDOW RANK ROWNUMBER