OKNO

Dotyczy: Obliczanie kolumny obliczeniowejtabeliobliczeniowej Miarawizualizacji

Zwraca wiele wierszy umieszczonych w danym interwale.

Składnia

WINDOW ( from[, from_type], to[, to_type][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parametry

Termin Definicja
z Wskazuje, gdzie jest uruchamiane okno. Może to być dowolne wyrażenie języka DAX zwracające wartość skalarną.
Zachowanie zależy od parametru <from_type> :
— jeśli <from_type> to REL, liczba wierszy do powrotu (wartość ujemna) lub do przodu (wartość dodatnia) z bieżącego wiersza w celu uzyskania pierwszego wiersza w oknie.
- Jeśli <from_type> jest ABS i <od> jest dodatni, to jest to pozycja początku okna od początku partycji. Indeksowanie jest oparte na 1. Na przykład 1 oznacza, że okno rozpoczyna się od początku partycji. Jeśli <wartość from> jest ujemna, jest to pozycja początku okna od końca partycji. -1 oznacza ostatni wiersz w partycji.
from_type Modyfikuje zachowanie parametru <from> . Możliwe wartości to ABS (bezwzględne) i REL (względne). Wartość domyślna to REL.
na wartość Tak samo jak <w przypadku elementu from>, ale wskazuje koniec okna. Ostatni wiersz znajduje się w oknie.
to_type Tak samo jak <from_type>, ale modyfikuje zachowanie <elementu .>
Relacji (Opcjonalnie) Wyrażenie tabeli, z którego są zwracane wiersze 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

Wszystkie wiersze z okna.

Uwagi

Z wyjątkiem kolumn dodanych przez funkcje tabeli języka DAX, każda kolumna w relacji, gdy <funkcja matchBy nie jest obecna, lub każda kolumna w <kolumnach matchBy>> i <partitionBy<>, gdy element matchBy> jest obecny, musi mieć odpowiednią wartość zewnętrzną, aby ułatwić zdefiniowanie bieżącego wiersza, na którym ma być wykonywane działanie.>< Jeśli from_type i to_type> mają wartość ABS, następujące elementy dotyczą tylko <kolumn partitionBy>:<><

  • Jeśli jest dokładnie jedna odpowiadająca kolumnie zewnętrznej, zostanie użyta jej wartość.
  • Jeśli nie ma odpowiedniej kolumny zewnętrznej:
    • Okno najpierw określi wszystkie kolumny, które nie mają odpowiedniej kolumny zewnętrznej.
    • Dla każdej kombinacji istniejących wartości dla tych kolumn w kontekście nadrzędnym okna jest obliczana wartość WINDOW, a odpowiednie wiersze są zwracane.
    • Końcowe dane wyjściowe okna to połączenie tych wierszy.
  • Jeśli istnieje więcej niż jedna odpowiadająca kolumna zewnętrzna, zwracany jest błąd.

Jeśli wszystkie <kolumny relacji> zostały dodane przez funkcje tabeli języka DAX, zwracany jest błąd.

Jeśli <element matchBy> jest obecny, funkcja WINDOW 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 identyfikować każdego wiersza w <relacji>, wówczas:

  • W oknie zostanie podjęta próba znalezienia najmniejszej liczby dodatkowych kolumn wymaganych do unikatowego zidentyfikowania każdego wiersza.
  • Jeśli takie kolumny można znaleźć, funkcja WINDOW 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 orderBy> lub <partitionBy> nie istnieje w ramach <relacji>.
  • Całe okno znajduje się poza partycją lub początek okna znajduje się po jego zakończeniu.

Jeśli funkcja WINDOW jest używana w kolumnie obliczeniowej zdefiniowanej w tej samej tabeli co <relacja, a <element orderBy> zostanie pominięty, zwracany> jest błąd.

Jeśli początek okna okaże się przed pierwszym wierszem, zostanie ustawiony na pierwszy wiersz. Podobnie, jeśli koniec okna znajduje się po ostatnim wierszu partycji, zostanie ustawiony na ostatni wiersz.

<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 — miara

Następująca miara:

3-day Average Price = 
AVERAGEX(
    WINDOW(
        -2,REL,0,REL,
        SUMMARIZE(ALLSELECTED('Sales'), 'Date'[Date], 'Product'[Product]),
        ORDERBY('Date'[Date]),
        KEEP,
        PARTITIONBY('Product'[Product])
    ), 
    CALCULATE(AVERAGE(Sales[Unit Price]))
)

Zwraca 3-dniową średnią cen jednostkowych dla każdego produktu. Zwróć uwagę, że okno 3-dniowe składa się z trzech dni, w których produkt ma sprzedaż, niekoniecznie trzy kolejne dni kalendarzowe.

Przykład 2 — miara

Następująca miara:

RunningSum =
SUMX (
    WINDOW (
        1, ABS, 0, REL,
        ALLSELECTED (
            'Date'[Fiscal Year],
            'Date'[Month Number Of Year]
        ),
        PARTITIONBY ( 'Date'[Fiscal Year] )
    ),
    [Total Sales]
)

Zwraca sumę bieżącą dla kolumny Total Sales by Month Number Of Year (Łączna sprzedaż według miesiąca numer roku) i jest uruchamiana ponownie dla każdego roku obrachunkowego:

Year (Rok) Numer miesiąca roku Kwota sprzedaży Runningsum
FY2018 1 $1,327,675 $1,327,675
FY2018 2 $3,936,463 $5,264,138
FY2018 3 $700,873 $5,965,011
FY2018 100 $1,519,275 $7,484,286
FY2018 5 $2,960,378 $10,444,664
FY2018 6 $1,487,671 $11,932,336
FY2018 7 $1,423,357 $13,355,693
FY2018 8 $2,057,902 $15,413,595
FY2018 9 $2,523,948 $17,937,543
FY2018 10 $561,681 $18,499,224
FY2018 11 $4,764,920 $23,264,145
FY2018 12 $596,747 $23,860,891
RO2019 1 $1,847,692 $1,847,692
RO2019 2 $2,829,362 $4,677,054
RO2019 3 $2,092,434 $6,769,488
RO2019 100 $2,405,971 $9,175,459
RO2019 5 $3,459,444 $12,634,903
RO2019 6 $2,850,649 $15,485,552
RO2019 7 $2,939,691 $18,425,243
RO2019 8 $3,964,801 $22,390,045
RO2019 9 $3,287,606 $25,677,650
RO2019 10 $2,157,287 $27,834,938
RO2019 11 $3,611,092 $31,446,030
RO2019 12 $2,624,078 $34,070,109
FY2020 1 $3,235,187 $3,235,187
FY2020 2 $4,070,046 $7,305,233
FY2020 3 $4,429,833 $11,735,066
FY2020 100 $4,002,614 $15,737,680
FY2020 5 $5,265,797 $21,003,477
FY2020 6 $3,465,241 $24,468,717
FY2020 7 $3,513,064 $27,981,781
FY2020 8 $5,247,165 $33,228,947
FY2020 9 $5,104,088 $38,333,035
FY2020 10 $3,542,150 $41,875,184
FY2020 11 $5,151,897 $47,027,081
FY2020 12 $4,851,194 $51,878,275

Przykład 3 — obliczanie wizualizacji

Następujące zapytanie języka DAX do obliczeń wizualnych:

TotalSalesRunningSumByYear = SUMX(WINDOW(0, ABS, 0, REL, ROWS, HIGHESTPARENT), [SalesAmount])

Zwraca skumulowaną łączną sprzedaż według miesiąca obliczoną wraz z każdym rokiem. Wartości 1 i -2 można użyć zamiast WARTOŚCI HIGHESTPARENT, z tymi samymi wynikami.

Poniższy zrzut ekranu przedstawia macierz wizualizacji i wyrażenie obliczania wizualizacji:

Obliczanie wizualizacji języka DAX

Przykład 4 — obliczanie wizualizacji

Następujące zapytanie języka DAX do obliczeń wizualnych:

TotalSalesRunningSumByQuarter = SUMX(WINDOW(0, ABS, 0, REL, , -1), [SalesAmount])

Zwraca skumulowaną łączną sprzedaż według miesiąca obliczoną wzdłuż każdego kwartału.

INDEKS
MOVINGAVERAGE
PRZESUNIĘCIE
ORDERBY
PARTYCJONOWANIE WG
ZAKRES
RANK
WIERSZNUMBERRUNNINGSUM