0 / 0
Go back to the English version of the documentation
Funkcje sekwencji
Last updated: 12 sty 2023
Funkcje sekwencji (SPSS Modeler)

W przypadku niektórych operacji istotna jest kolejność zdarzeń.

Aplikacja umożliwia pracę z następującymi sekwencjami rekordów:

  • Sekwencje i szeregi czasowe
  • Funkcje sekwencji
  • Indeksowanie rekordów
  • Uśrednianie, sumowanie i porównywanie wartości
  • Monitorowanie zmiany-różnicowanie
  • @SINCE
  • Wartości przesunięcia
  • Dodatkowe narzędzia kolejności

W wielu przypadkach każdy rekord w strumieniu można uznać za pojedynczą obserwację, niezależną od wszystkich innych. Zazwyczaj w takich sytuacjach kolejność rekordów nie jest ważna.

Jednak w niektórych klasach problemów kolejność rekordów jest niezwykle istotna. Dotyczy to głównie szeregów czasowych, w przypadku których kolejność rekordów odzwierciedla uszeregowaną sekwencję zdarzeń lub wystąpień. Każdy rekord to obraz stanu w danej chwili. Wiele najistotniejszych informacji może jednak być zawartych nie w wartościach chwilowych, ale w sposobie, w jaki te wartości się zmieniają i zachowują w czasie.

Oczywiście kluczowym parametrem nie zawsze musi być czas. Przykładowo: rekordy mogą odzwierciedlać analizy wykonane w określonych odległościach na linii.

Funkcje specjalne i dotyczące kolejności można rozpoznać dzięki następującym wyznacznikom:

  • Wszystkie te elementy są poprzedzane przedrostkiem @
  • Ich nazwy są podane wielkimi literami.

Funkcje sekwencji mogą się odnosić do rekordu aktualnie przetwarzanego przez węzeł, rekordów, które przeszły przez węzeł, a nawet (w jednym przypadku) rekordów, które dopiero przejdą przez węzeł. Funkcje sekwencji mogą być dowolnie mieszane z innymi komponentami wyrażeń CLEM, chociaż niektóre mają ograniczenia co do tego, co może być użyte jako ich argumenty.

Przykłady

Niekiedy chcemy uzyskać informację na temat czasu, który upłynął od danego zdarzenia lub spełnienia warunku. Tych informacji może dostarczyć funkcja @SINCE, np.:

@SINCE(Income > Outgoings) 

Ta funkcja zwraca przesunięcie ostatniego rekordu, w którym warunek był spełniony, tj. liczbę rekordów przed tym, w którym warunek był spełniony. Jeśli warunek nigdy nie był prawdziwy, funkcja @SINCE zwraca @INDEX + 1.

Niekiedy użytkownik może chcieć się odnieść do wartości bieżącego rekordu w wyrażeniu użytym przez @SINCE. Tę operację można wykonać za pomocą funkcji @THIS, która określa, że nazwa zmiennej zawsze odnosi się do bieżącego rekordu. Aby znaleźć przesunięcie ostatniego rekordu, w którym wartość zmiennej Concentration jest większa niż dwukrotna wartość bieżącego rekordu, można użyć wyrażenia:

@SINCE(Concentration > 2 * @THIS(Concentration)) 

Niekiedy warunek dodany do @SINCE jest z definicji prawdziwy w przypadku bieżącego rekordu, np.:

@SINCE(ID == @THIS(ID)) 

Z tego powodu program @SINCE nie ocenia jego stanu dla bieżącego rekordu. Należy użyć podobnej funkcji (@SINCE0), aby ocenić warunek w przypadku bieżącego rekordu oraz poprzednich rekordów; jeśli warunek jest prawdziwy w przypadku bieżącego rekordu, funkcja @SINCE0 zwraca wartość 0.

Tabela 1. Funkcje sekwencji CLEM
Funkcja Wynik Opis
MEAN(FIELD) Liczba rzeczywista Zwraca średnią wartości dla określonej ZMIENNEJ lub ZMIENNYCH.
@MEAN(FIELD, EXPR) Liczba rzeczywista Zwraca średnią wartości dla ZMIENNEJ wobec ostatnich rekordów WYR odebranych przez bieżący węzeł, w tym bieżący rekord. ZMIENNA musi być nazwą zmiennej numerycznej. WYR może być dowolnym wyrażeniem rozwijanym do liczby całkowitej większej niż 0. Jeśli parametr WYR. zostanie pominięty lub jeśli przekracza liczbę odebranych do tej pory rekordów, zwracana jest średnia ze wszystkich odebranych do tej pory rekordów.
@MEAN(FIELD, EXPR, INT) Liczba rzeczywista Zwraca średnią wartości dla ZMIENNEJ wobec ostatnich rekordów WYR odebranych przez bieżący węzeł, w tym bieżący rekord. ZMIENNA musi być nazwą zmiennej numerycznej. WYR może być dowolnym wyrażeniem rozwijanym do liczby całkowitej większej niż 0. Jeśli parametr WYR. zostanie pominięty lub jeśli przekracza liczbę odebranych do tej pory rekordów, zwracana jest średnia ze wszystkich odebranych do tej pory rekordów. LCAŁK określa maksymalną liczbę wartości sprawdzanych w tył. Takie rozwiązanie jest znacznie bardziej wydajne niż korzystanie z dwóch argumentów.
@DIFF1(FIELD) Liczba rzeczywista Zwraca pierwszą różniczkę ZMIENNEJ. Jednoargumentowa postać zwraca różnicę pomiędzy bieżącą wartością a poprzednią wartością zmiennej. Zwraca wartość $null$, jeśli prawidłowe, poprzednie rekordy nie istnieją.
@DIFF1(FIELD1, FIELD2) Liczba rzeczywista Postać dwuargumentowa zwraca pierwszą różniczkę ZMIENNEJ1 względem ZMIENNEJ2. Zwraca wartość $null$, jeśli prawidłowe, poprzednie rekordy nie istnieją. Zwracana wartość jest obliczana jako @DIFF1(FIELD1)/@DIFF1(FIELD2).
@DIFF2(FIELD) Liczba rzeczywista Zwraca drugą różniczkę ZMIENNEJ. Jednoargumentowa postać zwraca różnicę pomiędzy bieżącą wartością a poprzednią wartością zmiennej. Zwraca wartość $null$, jeśli prawidłowe, poprzednie rekordy nie istnieją. Wartość @DIFF2 jest obliczana jako @DIFF(@DIFF(FIELD)).
@DIFF2(FIELD1, FIELD2) Liczba rzeczywista Postać dwuargumentowa zwraca drugą różniczkę ZMIENNEJ1 względem ZMIENNEJ2. Zwraca wartość $null$, jeśli prawidłowe, poprzednie rekordy nie istnieją. To jest złożone obliczenie – @DIFF1(FIELD1)/@DIFF1(FIELD2) - @OFFSET(@DIFF1(FIELD1),1)/@OFFSET(@DIFF1(FIELD2))) / @DIFF1(FIELD2).
@INDEX Liczba całkowita Zwraca indeks bieżącego rekordu. Indeksy są alokowane w rekordach zgodnie z ich przybyciem w bieżącym węźle. Pierwszemu rekordowi jest nadawany indeks 1, a numery indeksów w przypadku wszystkich kolejnych rekordów zwiększają się o 1.
@LAST_NON_BLANK(FIELD) Dowolne Zwraca ostatnią wartość ZMIENNEJ, która nie była pusta, zgodnie z węzłem źródłowym lub wprowadzania danych. Jeśli nie istnieją niepuste wartości ZMIENNEJ w odczytanych do tej pory rekordach, zwracana jest wartość $null$. Wartości puste (nazywane również brakującymi wartościami użytkownika) można definiować oddzielnie dla każdej zmiennej.
@MAX(FIELD) Liczba Zwraca wartość maksymalną określonej ZMIENNEJ.
@MAX(FIELD, EXPR) Liczba Zwraca maksymalną wartość ZMIENNEJ w ostatnich rekordach WYR odebranych do tej pory z uwzględnieniem bieżącego rekordu. ZMIENNA musi być nazwą zmiennej numerycznej. WYR może być dowolnym wyrażeniem rozwijanym do liczby całkowitej większej niż 0.
@MAX(FIELD, EXPR, INT) Liczba Zwraca maksymalną wartość ZMIENNEJ w ostatnich rekordach WYR odebranych do tej pory z uwzględnieniem bieżącego rekordu. ZMIENNA musi być nazwą zmiennej numerycznej. WYR może być dowolnym wyrażeniem rozwijanym do liczby całkowitej większej niż 0. Jeśli parametr WYR. zostanie pominięty lub jeśli przekracza liczbę odebranych do tej pory rekordów, zwracana jest maksymalna wartość dla wszystkich odebranych do tej pory rekordów. LCAŁK określa maksymalną liczbę wartości sprawdzanych w tył. Takie rozwiązanie jest znacznie bardziej wydajne niż korzystanie z dwóch argumentów.
@MIN(FIELD) Liczba Zwraca wartość minimalną określonej ZMIENNEJ.
@MIN(FIELD, EXPR) Liczba Zwraca minimalną wartość dla ZMIENNEJ wobec ostatnich rekordów WYR odebranych do tej pory z uwzględnieniem bieżącego rekordu. ZMIENNA musi być nazwą zmiennej numerycznej. WYR może być dowolnym wyrażeniem rozwijanym do liczby całkowitej większej niż 0.
@MIN(FIELD, EXPR, INT) Liczba Zwraca minimalną wartość dla ZMIENNEJ wobec ostatnich rekordów WYR odebranych do tej pory z uwzględnieniem bieżącego rekordu. ZMIENNA musi być nazwą zmiennej numerycznej. WYR może być dowolnym wyrażeniem rozwijanym do liczby całkowitej większej niż 0. Jeśli parametr WYR. zostanie pominięty lub jeśli przekracza liczbę odebranych do tej pory rekordów, zwracana jest minimalna wartość dla wszystkich odebranych do tej pory rekordów. LCAŁK określa maksymalną liczbę wartości sprawdzanych w tył. Takie rozwiązanie jest znacznie bardziej wydajne niż korzystanie z dwóch argumentów.
@OFFSET(FIELD, EXPR) Dowolne Zwraca wartość ZMIENNEJ w rekordzie przesuniętym względem bieżącego rekordu o wartość WYR. Przesunięcie dodatnie odnosi się do rekordu, który już przeszedł ("spojrzenie w tył"), a przesunięcie ujemne określa "spojrzenie w przód” względem rekordu, który dopiero nadejdzie. Przykładowo: funkcja @OFFSET(Status, 1) zwraca wartość zmiennej Status w poprzednim rekordzie, natomiast @OFFSET(Status, –4) "spogląda w przód" w zakresie czterech rekordów w sekwencji (czyli rekordów, które jeszcze nie przeszły przez ten węzeł). Przesunięcie ujemne ("spojrzenie w przód") należy określić jako stałą. W przypadku dodatnich przesunięć tylko wartość WYR może być również dowolnym wyrażeniem CLEM, które jest wartościowane dla bieżącego rekordu w celu nadania przesunięcia. W takim przypadku trzyargumentowa wersja tej funkcji powinna zwiększyć wydajność działania (patrz następna funkcja). Jeśli wyrażenie zwraca wynik inny niż nieujemna liczba całkowita, wyświetlany jest błąd. Oznacza to, że nie można uzyskać obliczenia przesunięcia w przód. Należy zauważyć, że funkcja referencyjna @OFFSET nie może używać funkcji wyszukiwania literału w przód. Na przykład w węźle wypełniania nie można zastąpić wartości field1 przy użyciu wyrażenia, takiego jak @OFFSET(field1,-2). W węźle wypełniającym, wypełniając pole, istnieją dwie różne wartości tego pola, a mianowicie wartość wstępnie wypełniona i wypełniona po wypełnieniu pola. Gdy funkcja @OFFSET odnosi się do samej siebie, odnosi się ona do wartości po wypełnieniu. Wartość po wypełnieniu istnieje tylko w przypadku minionych wierszy, więc odnosząca się do samej siebie funkcja @OFFSET może się odnosić tylko do minionych wierszy. Ponieważ samodzielny referencja @OFFSET nie może odnosić się do przyszłości, wykonuje następujące sprawdzenia przesunięcia:
  • Jeśli przesunięcie jest literalne i w przyszłości, przed rozpoczęciem wykonywania zgłaszany jest błąd.
  • Jeśli przesunięcie jest wyrażeniem i rozwija się w kierunku przyszłości w środowisku wykonawczym, funkcja @OFFSET zwraca wartość $null$.
Należy pamiętać, że użycie zarówno funkcji lookahead, jak i lookback w obrębie jednego węzła nie jest obsługiwane.
@OFFSET(FIELD, EXPR, INT) Dowolne Wykonuje taką samą operację jak funkcja @OFFSET, jednak dodawany jest trzeci argument (LCAŁK), który określa maksymalną liczbę wartości do przeszukania w tył. W sytuacjach kiedy przesunięcie jest obliczane na podstawie wyrażenia, dodanie trzeciego argumentu powinno zwiększyć wydajność. Przykładowo: w wyrażeniu, takim jak @OFFSET(Foo, Month, 12) system wie, że należy zachować tylko ostatnich dwanaście wartości Foo; w przeciwnym razie na wszelki wypadek przechowywane są wszystkie wartości. W sytuacjach kiedy wartość przesunięcia jest stałą (dotyczy to też ujemnych przesunięć w przód, które muszą być wartościami stałymi), stosowanie trzeciego argumentu nie ma uzasadnienia i należy stosować dwuargumentową wersję tej funkcji. Użytkownik powinien również zapoznać się z funkcjami odnoszącymi się do samych siebie w wersji dwuargumentowej opisanej wcześniej. Należy pamiętać, że użycie zarówno funkcji lookahead, jak i lookback w obrębie jednego węzła nie jest obsługiwane.
@SDEV(FIELD) Liczba rzeczywista Zwraca odchylenie standardowe wartości dla określonej ZMIENNEJ lub ZMIENNYCH.
@SDEV(FIELD, EXPR) Liczba rzeczywista Zwraca odchylenie standardowe wartości ZMIENNEJ z ostatnich rekordów WYR odebranych przez bieżący węzeł z uwzględnieniem bieżącego rekordu. ZMIENNA musi być nazwą zmiennej numerycznej. WYR może być dowolnym wyrażeniem rozwijanym do liczby całkowitej większej niż 0. Jeśli parametr WYR. zostanie pominięty lub jeśli przekracza liczbę odebranych do tej pory rekordów, zwracane jest odchylenie standardowe dla wszystkich odebranych do tej pory rekordów.
@SDEV(FIELD, EXPR, INT) Liczba rzeczywista Zwraca odchylenie standardowe wartości ZMIENNEJ z ostatnich rekordów WYR odebranych przez bieżący węzeł z uwzględnieniem bieżącego rekordu. ZMIENNA musi być nazwą zmiennej numerycznej. WYR może być dowolnym wyrażeniem rozwijanym do liczby całkowitej większej niż 0. Jeśli parametr WYR. zostanie pominięty lub jeśli przekracza liczbę odebranych do tej pory rekordów, zwracane jest odchylenie standardowe dla wszystkich odebranych do tej pory rekordów. LCAŁK określa maksymalną liczbę wartości sprawdzanych w tył. Takie rozwiązanie jest znacznie bardziej wydajne niż korzystanie z dwóch argumentów.
@SINCE(EXPR) Dowolne Zwraca liczbę rekordów, które przeszły od WYR, dowolnego wyrażenia CLEM, było prawdziwe.
@SINCE(EXPR, INT) Dowolne Dodanie drugiego argumentu (LCAŁK) określa maksymalną liczbę rekordów, które są badane w tył. Jeśli WYR nigdy nie było prawdziwe, funkcją LCAŁK jest @INDEX+1.
@SINCE0(EXPR) Dowolne Uwzględnia bieżący rekord, natomiast funkcja @SINCE nie uwzględnia go. Funkcja @SINCE0 zwraca 0, jeśli WYR jest prawdziwe dla bieżącego rekordu.
@SINCE0(EXPR, INT) Dowolne Dodanie drugiego argumentu (LCAŁK) określa maksymalną liczbę rekordów, które są badane w tył.
@SUM(FIELD) Liczba Zwraca sumę wartości dla określonej ZMIENNEJ lub ZMIENNYCH.
@SUM(FIELD, EXPR) Liczba Zwraca sumę wartości dla ZMIENNEJ wobec ostatnich rekordów WYR odebranych przez bieżący węzeł z uwzględnieniem bieżącego rekordu. ZMIENNA musi być nazwą zmiennej numerycznej. WYR może być dowolnym wyrażeniem rozwijanym do liczby całkowitej większej niż 0. Jeśli parametr WYR. zostanie pominięty lub jeśli przekracza liczbę odebranych do tej pory rekordów, zwracana jest suma wszystkich odebranych do tej pory rekordów.
@SUM(FIELD, EXPR, INT) Liczba Zwraca sumę wartości dla ZMIENNEJ wobec ostatnich rekordów WYR odebranych przez bieżący węzeł z uwzględnieniem bieżącego rekordu. ZMIENNA musi być nazwą zmiennej numerycznej. WYR może być dowolnym wyrażeniem rozwijanym do liczby całkowitej większej niż 0. Jeśli parametr WYR. zostanie pominięty lub jeśli przekracza liczbę odebranych do tej pory rekordów, zwracana jest suma wszystkich odebranych do tej pory rekordów. LCAŁK określa maksymalną liczbę wartości sprawdzanych w tył. Takie rozwiązanie jest znacznie bardziej wydajne niż korzystanie z dwóch argumentów.
@THIS(FIELD) Dowolne Zwraca wartość zmiennej o nazwie ZMIENNA w bieżącym rekordzie. Używane tylko w wyrażeniach @SINCE.
Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more