PredictTimeSeries (DMX)

Dotyczy: usług SQL Server Analysis Services

Zwraca przewidywane przyszłe wartości danych szeregów czasowych. Dane szeregów czasowych są ciągłe i mogą być przechowywane w zagnieżdżonej tabeli lub w tabeli przypadków. Funkcja PredictTimeSeries zawsze zwraca zagnieżdżoną tabelę.

Syntax

  
PredictTimeSeries(<table column reference>)  
PredictTimeSeries(<table column reference>, n)  
PredictTimeSeries(<table column reference>, n-start, n-end)  
PredictTimeSeries(<scalar column reference>)  
PredictTimeSeries(<scalar column reference>, n)  
PredictTimeSeries(<scalar column reference>, n-start, n-end)  
PredictTimeSeries(<table column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>  
PredictTimeSeries(<table column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>  
PredictTimeSeries(<scalar column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>  
PredictTimeSeries(<scalar column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>  

Arguments

<Referencja> kolumn w tabeli, <odniesienie> kolumny skalarnej
Określa nazwę kolumny do przewidzenia. Kolumna może zawierać dane skalarne lub tabelaryczne.

n
Określa liczbę kolejnych kroków do przewidzenia. Jeśli wartość dla n nie jest określona, domyślna wartość wynosi 1.

n nie może być równe 0. Funkcja zwraca błąd, jeśli nie wykonasz przynajmniej jednej prognozy.

n-start, n-koniec
Określa zakres kroków szeregów czasowych.

n-start musi być liczbą całkowitą i nie może być 0.

n-end musi być liczbą całkowitą większą niż n-start.

<Zapytanie źródłowe>
Definiuje dane zewnętrzne wykorzystywane do przewidywania.

REPLACE_MODEL_CASES | EXTEND_MODEL_CASES
Wskazuje, jak obsługiwać nowe dane.

REPLACE_MODEL_CASES określa, że punkty danych w modelu powinny zostać zastąpione nowymi danymi. Jednak prognozy opierają się na wzorcach istniejących modeli górniczych.

EXTEND_MODEL_CASES określa, że nowe dane powinny być dodane do oryginalnego zbioru danych treningowych. Prognozy na przyszłość są dokonywane na zbiorze danych złożonych dopiero po wykorzystaniu nowych danych.

Argumenty te można stosować tylko wtedy, gdy nowe dane są dodawane za pomocą instrukcji PREDICTION JOIN. Jeśli użyjesz zapytania PREDICTION JOIN i nie określisz argumentu, domyślnym zapytaniem jest EXTEND_MODEL_CASES.

Zwracany typ

Wyraz >twarzy przy <stole.

Remarks

Algorytm Microsoft Time Series nie obsługuje historycznego przewidywania, gdy używasz instrukcji PREDICTION JOIN do dodawania nowych danych.

W PREDICTION JOIN proces predykcji zawsze rozpoczyna się od kroku czasowego bezpośrednio po zakończeniu oryginalnej serii treningowej. To prawda nawet jeśli dodasz nowe dane. Dlatego wartości n parametrów i n-startowych muszą być liczbą całkowitą większą niż 0.

Note

Długość nowych danych nie wpływa na punkt początkowy do prognozowania. Dlatego jeśli chcesz dodać nowe dane i jednocześnie tworzyć nowe prognozy, upewnij się, że ustawiasz punkt początkowy prognozy na wartość większą niż długość nowych danych lub wydłużysz punkt końcowy o długość nowych danych.

Examples

Poniższe przykłady pokazują, jak dokonywać prognoz na podstawie istniejącego modelu szeregów czasowych:

  • Pierwszy przykład pokazuje, jak dokonać określonej liczby przewidywań na podstawie obecnego modelu.

  • Drugi przykład pokazuje, jak użyć parametru REPLACE_MODEL_CASES do zastosowania wzorców z określonego modelu do nowego zbioru danych.

  • Trzeci przykład pokazuje, jak użyć parametru EXTEND_MODEL_CASES do aktualizacji modelu wydobycia na świeże dane.

Aby dowiedzieć się więcej o pracy z modelami szeregów czasowych, zobacz samouczek eksploracji danych, Lekcja 2: Budowanie scenariusza prognozowania (Tutorial Intermediate Data Mining) oraz Time Series Prediction DMX Tutorial.

Note

Możesz uzyskać inne efekty ze swojego modelu; Wyniki poniższych przykładów przedstawiono jedynie w celu zilustrowania formatu wyników.

Przykład 1: Przewidywanie liczby przekrojów czasowych

Poniższy przykład wykorzystuje funkcję PredictTimeSeries do zwracania prognozy dla kolejnych trzech kroków czasowych i ogranicza wyniki do serii M200 w regionach Europy i Pacyfiku. W tym konkretnym modelu atrybutem przewidywalnym jest Quantity, więc musisz użyć [Quantity] jako pierwszego argumentu do funkcji PredictTimeSeries.

SELECT FLATTENED  
    [Forecasting].[Model Region],  
    PredictTimeSeries([Forecasting].[Quantity],3)AS t   
FROM  
    [Forecasting]  
WHERE [Model Region] = 'M200 Europe'  
OR [Model Region] = 'M200 Pacific'  

Oczekiwane wyniki:

Region modelowy t.$TIME t. Ilość
M200 Europa 25.07.2008 00:00:00 121
M200 Europa 25.08.2008 00:00:00 142
M200 Europa 25.09.2008 00:00 152
M200 Pacyfik 25.07.2008 00:00:00 46
M200 Pacyfik 25.08.2008 00:00:00 44
M200 Pacyfik 25.09.2008 00:00 42

W tym przykładzie słowo kluczowe FLATTENED zostało użyte, aby ułatwić odczytanie wyników. Jeśli nie użyjesz słowa kluczowego FLATTENED, lecz zamiast tego zwrócisz hierarchiczny zestaw wierszy, to zapytanie zwraca dwie kolumny. Pierwsza kolumna zawiera wartość dla [ModelRegion], a druga kolumna zawiera zagnieżdżoną tabelę z dwiema kolumnami: $TIME, która pokazuje przewidywane przekłady czasowe, oraz Quantity, która zawiera przewidywane wartości.

Przykład 2: Dodawanie nowych danych i wykorzystanie REPLACE_MODEL_CASES

Załóżmy, że okazuje się, że dane były nieprawidłowe dla danego regionu i chcesz użyć wzorców w modelu, ale dostosować prognozy do nowych danych. Albo możesz odkryć, że inny region ma bardziej wiarygodne trendy i chcesz zastosować najbardziej wiarygodny model do danych z innego regionu.

W takich sytuacjach możesz użyć parametru REPLACE_MODEL_CASES i określić nowy zestaw danych jako dane historyczne. Dzięki temu prognozy będą oparte na wzorcach w określonym modelu, ale będą kontynuowane płynnie od końca nowych punktów danych. Pełny przegląd tego scenariusza można znaleźć w artykule Advanced Time Series Predictions (Intermediate Data Minmining Tutorial).

Poniższe zapytanie PREDICTION JOIN ilustruje składnię do zastępowania danych i tworzenia nowych przewidywań. Dla danych zastępczych przykład pobiera wartość kolumn Amount i Quantity i mnoży każdą przez dwa:

SELECT [Forecasting].[Model Region],  
    PredictTimeSeries([Forecasting].[Quantity], 3, REPLACE_MODEL_CASES)   
FROM  
    [Forecasting]  
PREDICTION JOIN  
  OPENQUERY([Adventure Works DW Multidimensional 2012],  
    'SELECT [ModelRegion],   
    ([Quantity] * 2) as Quantity,  
    ([Amount] * 2) as Amount,  
      [ReportingDate]  
    FROM [dbo].vTimeSeries  
    WHERE ModelRegion = N''M200 Pacific''  
    ') AS t  
ON  
  [Forecasting].[Model Region] = t.[ Model Region] AND  
[Forecasting].[Reporting Date] = t.[ReportingDate] AND  
[Forecasting].[Quantity] = t.[Quantity] AND  
[Forecasting].[Amount] = t.[Amount]  

Poniższe tabele porównują wyniki prognozowania.

Oryginalne prognozy:

Region modelowy DataRaportowania Ilość
M200 Pacyfik 25.07.2008 00:00:00 46
M200 Pacyfik 25.08.2008 00:00:00 44
M200 Pacyfik 25.09.2008 00:00 42

Zaktualizowane prognozy:

Region modelowy DataRaportowania Ilość
M200 Pacyfik 25.07.2008 00:00:00 91
M200 Pacyfik 25.08.2008 00:00:00 89
M200 Pacyfik 25.09.2008 00:00 84

Przykład 3: Dodawanie nowych danych i wykorzystanie EXTEND_MODEL_CASES

Przykład 3 ilustruje użycie opcji EXTEND_MODEL_CASES do dostarczania nowych danych, które są dodawane na koniec istniejącej serii danych. Zamiast zastępować istniejące punkty danych, nowe dane są dodawane do modelu.

W poniższym przykładzie nowe dane są dostępne w instrukcji SELECT, która następuje po NATURAL PREDICTION JOIN. Możesz dostarczyć wiele wierszy nowego wejścia w tej składni, ale każdy nowy wiersz musi mieć unikalny znacznik czasowy:

SELECT [Model Region],  
    PredictTimeSeries([Forecasting].[Quantity], 5, EXTEND_MODEL_CASES)   
FROM  
    [Forecasting]  
NATURAL PREDICTION JOIN  
    (SELECT  
        1 as [Reporting Date],  
        10 as [Quantity],  
        'M200 Europe' AS [Model Region]  
    UNION SELECT   
        2 as [Reporting Date],  
        15 as [Quantity],  
        'M200 Europe' AS [Model Region]  
) AS T  
WHERE ([Model Region] = 'M200 Europe'  
 OR [Model Region] = 'M200 Pacific')  

Ponieważ zapytanie korzysta z opcji EXTEND_MODEL_CASES , Analysis Services wykonuje następujące działania dla swoich prognoz:

  • Zwiększa całkowity rozmiar przypadków treningowych, dodając do modelu dwa nowe miesiące danych.

  • Zaczyna się przewidywania na końcu poprzednich danych przypadków. Dlatego pierwsze dwie prognozy reprezentują nowe, rzeczywiste dane sprzedażowe, które właśnie dodałeś do modelu.

  • Zwraca nowe prognozy dla pozostałych trzech przekładów czasowych opartych na nowo rozszerzonym modelu.

Poniższa tabela przedstawia wyniki zapytania z Przykładu 2. Zwróć uwagę, że pierwsze dwie wartości zwrócone dla M200 Europe są dokładnie takie same jak nowe, które podałeś przez Ciebie. Takie zachowanie jest zamierzone; Jeśli chcesz rozpocząć przewidywania po zakończeniu nowych danych, musisz określić krok czasowy na początku i zakończenie.

Zauważ też, że nie dostarczyłeś nowych danych dla regionu Pacyfiku. Dlatego Usługi Analizy zwracają nowe prognozy dla wszystkich pięciu przekładów czasowych.

Ilość: M200 Europe. EXTEND_MODEL_CASES:

$TIME Ilość
7/25/2008 0:00 10
8/25/2008 0:00 15
9/25/2008 0:00 72
10/25/2008 0:00 69
11/25/2008 0:00 68

Ilość: M200 Pacific. EXTEND_MODEL_CASES:

$TIME Ilość
7/25/2008 0:00 46
8/25/2008 0:00 44
9/25/2008 0:00 42
10/25/2008 0:00 42
11/25/2008 0:00 38

Przykład 4: Zwracanie statystyk w prognozie szeregu czasowego

Funkcja PredictTimeSeries nie obsługuje INCLUDE_STATISTICS jako parametru. Jednak następujące zapytanie może być użyte do zwrócenia statystyk predykcyjnych dla zapytania o szeregi czasowej. To podejście można również stosować w modelach z zagnieżdżonymi kolumnami tabeli.

W tym konkretnym modelu atrybutem przewidywalnym jest Quantity, więc musisz użyć [Quantity] jako pierwszego argumentu do funkcji PredictTimeSeries. Jeśli Twój model używa innej przewidywalnej cechy, możesz zastąpić inną nazwą kolumny.

SELECT FLATTENED [Model Region],  
(SELECT   
     $Time,  
     [Quantity] as [PREDICTION],   
     PredictVariance([Quantity]) AS [VARIANCE],  
     PredictStdev([Quantity]) AS [STDEV]  
FROM  
      PredictTimeSeries([Quantity], 3) AS t  
) AS t  
FROM Forecasting  
WHERE [Model Region] = 'M200 Europe'  
OR [Model Region] = 'M200 North America'  

Przykładowe wyniki:

Region modelowy t.$TIME t.PREDICTION t.WARIANCJA t.STDEV
M200 Europa 25.07.2008 00:00:00 121 11.6050581415597 3.40661975300439
M200 Europa 25.08.2008 00:00:00 142 10.678201866621 3.26775180615374
M200 Europa 25.09.2008 00:00 152 9.86897842568614 3.14149302493037
M200 Ameryka Północna 25.07.2008 00:00:00 163 1.20434529288162 1.20434529288162
M200 Ameryka Północna 25.08.2008 00:00:00 178 1.65031343900634 1.65031343900634
M200 Ameryka Północna 25.09.2008 00:00 156 1.68969399185442 1.68969399185442

Note

W tym przykładzie użyto słowa kluczowego FLATTENED, aby ułatwić przedstawienie wyników w tabeli; jednak jeśli Twój dostawca obsługuje hierarchiczne wiersze, możesz pominąć słowo kluczowe FLATTENED. Jeśli pominiesz słowo kluczowe FLATTENED, zapytanie zwraca dwie kolumny: pierwsza kolumna zawiera wartość identyfikującą serię [Model Region] danych, a druga kolumna zawiera zagnieżdżoną tabelę statystyk.