PredictTimeSeries (DMX)

A következőkre vonatkozik: SQL Server Analysis Services

Előre jelzett jövőbeli értékeket hoz az idősorok adataihoz. Az idősoros adatok folyamatosak, és tárolhatók egy beágyazott táblában vagy esettáblában. A PredictTimeSeries függvény mindig egy beágyazott táblát ad vissza.

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

<táblázatoszlop hivatkozás>, <skálároszlop hivatkozás>
Megadja az előre jelezhető oszlop nevét. Az oszlop tartalmazhat skaláris vagy táblázatos adatokat.

n
Megadja, hány következő lépést kell előre látni. Ha n-re nincs megadva érték, akkor az alapértelmezett érték 1.

n nem lehet 0. A függvény hibát ad vissza, ha legalább egy előrejelzést nem teszünk.

n-start, n-end
Megad egy idősor-lépéstartományt.

n-start egész számnak kell lennie, és nem lehet 0.

n-végének egy egész számnak kell lennie, amely nagyobb, mint n-start.

<Forráslekérdezés>
Definiálja azokat a külső adatokat, amelyeket előrejelzésekhez használnak.

REPLACE_MODEL_CASES | EXTEND_MODEL_CASES
Megmutatja, hogyan kezeljük az új adatokat.

REPLACE_MODEL_CASES előírja, hogy a modell adatpontjait új adatokkal kell helyettesíteni. Azonban a jóslatok a meglévő bányászati modell mintázatán alapulnak.

EXTEND_MODEL_CASES előírja, hogy az új adatokat az eredeti tanítási adathalmazhoz kell hozzáadni. A jövőbeli előrejelzéseket csak az összetett adathalmazon akkor teszik, miután az új adatok már elhasználták.

Ezek az argumentumok csak akkor használhatók, ha új adatokat adnak hozzá egy PREDICTION JOIN utasítással. Ha PREDICTION JOIN lekérdezést használsz, és nem jelölsz meg argumentust, akkor az alapértelmezett EXTEND_MODEL_CASES.

Visszatérési típus

Egy <asztali kifejezés>.

Remarks

A Microsoft Time Series algoritmus nem támogatja a történelmi előrejelzést, amikor a PREDICTION JOIN utasítást használjuk új adatok hozzáadására.

A PREDICTION JOIN esetén a jóslási folyamat mindig az eredeti képzési sorozat vége utáni időlépésnél kezdődik. Ez akkor is igaz, ha új adatokat adsz hozzá. Ezért az n paraméter és n-kezdő paraméterértékek egész számnak kell lenniük, amelyek nagyobbak lehetnek 0-nál.

Note

Az új adatok hossza nem befolyásolja az előrejelzés kiindulópontját. Ezért, ha új adatokat szeretnél hozzáadni és új előrejelzéseket is készíteni, győződj meg róla, hogy a jóslás kezdőpontját vagy az új adatok hosszánál nagyobb értéket állítsd be, vagy a jóslás végpontját az új adatok hosszával hosszabbítsd.

Examples

Az alábbi példák bemutatják, hogyan lehet előrejelzéseket készíteni egy meglévő idősorozat modell ellen:

  • Az első példa megmutatja, hogyan lehet meghatározott számú előrejelzést készíteni a jelenlegi modell alapján.

  • A második példa bemutatja, hogyan lehet a REPLACE_MODEL_CASES paramétert felhasználni a megadott modell mintáinak alkalmazására egy új adathalmazra.

  • A harmadik példa bemutatja, hogyan lehet a EXTEND_MODEL_CASES paramétert használni egy bányászati modell frissítésére friss adatokkal.

Ha többet szeretnél megtudni az idősoros modellekkel való munkáról, tekintse meg az adatbányászati oktatóanyagot, a 2. leckét: Előrejelzési forgatókönyv építését (Intermediate Data Mining tutorial) és az Idősorozat előrejelzési DMX oktatóanyagot.

Note

A modelledből eltérő eredményeket érhetsz el; Az alábbi példák eredményei csak az eredmény formátumának illusztrálására szolgálnak.

1. példa: Idővágások számának előrejelzése

A következő példa a PredictTimeSeries függvényt használja a következő három időlépés előrejelzésére, és az eredményeket az M200-as sorozatra korlátozza az európai és csendes-óceáni régiókban. Ebben a modellben a kiszámítható attribútum a mennyiség, ezért az PredictTimeSeries függvény első argumentumként kell használni [Quantity] .

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

Várt eredmények:

Modell régió t.$TIME t.Mennyiség
M200 Europe 2008.07.25. 00:00:00 121
M200 Europe 2008.08.25. 00:00:00 142
M200 Europe 2008.09.25. 00:00:00 152
M200 Pacific 2008.07.25. 00:00:00 46
M200 Pacific 2008.08.25. 00:00:00 44
M200 Pacific 2008.09.25. 00:00:00 42

Ebben a példában a LAPÍTOTT kulcsszót használtuk, hogy az eredmények könnyebben olvashatók legyenek. Ha nem a FLATTENED kulcsszót használod, hanem hierarchikus sorhalmazt adsz vissza, ez a lekérdezés két oszlopot ad vissza. Az első oszlop tartalmazza a [ModelRegion] értékét, a második oszlop pedig egy beágyazott táblázatot két oszloppal: $TIME, amely a megjósolt időszeleteket mutatja, és a Mennyiség, amely tartalmazza a jósolt értékeket.

2. példa: Új adatok hozzáadása és REPLACE_MODEL_CASES használata

Tegyük fel, hogy az adatok egy adott régióban hibásak voltak, és a modell mintázatait szeretnéd használni, de az előrejelzéseket az új adatokhoz igazítjuk. Vagy előfordulhat, hogy egy másik régióban megbízhatóbb trendek vannak, és a legmegbízhatóbb modellt szeretnéd alkalmazni egy másik régió adataira.

Ilyen esetekben használhatod a REPLACE_MODEL_CASES paramétert, és megadhatsz egy új adathalmazt, amit történelmi adatként használhatsz. Így a előrejelzések a megadott modell mintáin alapulnak, de az új adatpontok végétől simán folytatódnak. Ennek a forgatókönyvnek a teljes végigjátszásáért lásd az Advanced Time Series Predictions (Intermediate Data Mining Tutorial) című részt.

A következő PREDICTION JOIN lekérdezés bemutatja az adatok helyettesítésének és új előrejelzések készítésének szintaxisát. A helyettesítő adatok esetében a példa lekéri a Mennyiség és a Mennyiség oszlopok értékét, és mindegyiket kettővel szorozza:

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]  

Az alábbi táblázatok összehasonlítják az előrejelzések eredményeit.

Eredeti előrejelzések:

Modell régió Jelentési Dátum Mennyiség
M200 Pacific 2008.07.25. 00:00:00 46
M200 Pacific 2008.08.25. 00:00:00 44
M200 Pacific 2008.09.25. 00:00:00 42

Frissített előrejelzések:

Modell régió Jelentési Dátum Mennyiség
M200 Pacific 2008.07.25. 00:00:00 91
M200 Pacific 2008.08.25. 00:00:00 89
M200 Pacific 2008.09.25. 00:00:00 84

3. példa: Új adatok hozzáadása és EXTEND_MODEL_CASES használata

A 3. példa bemutatja a EXTEND_MODEL_CASES opció használatát új adatok megadására, amelyeket egy meglévő adatsorozat végéhez adnak hozzá. Ahelyett, hogy a meglévő adatpontokat cserélnék, az új adatokat hozzáadják a modellhez.

A következő példában az új adatokat a SELECT utasításban adjuk meg, amely a NATURAL PREDICTION JOIN következetet követi. Ezzel a szintaxissal több sor új bemenetet is adhatsz be, de minden új bemeneti sornak egyedi időbélyeggel kell rendelkeznie:

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')  

Mivel a lekérdezés a EXTEND_MODEL_CASES opciót használja, az Analysis Services a következő lépéseket teszi előrejelzéseihez:

  • Növeli a betanítási esetek teljes méretét azzal, hogy hozzáadja a két új hónapnyi adatot a modellhez.

  • A jóslatokat az előző esetadatok végén indítja. Ezért az első két előrejelzés az új tényleges értékesítési adatokat jelenti, amelyeket nemrég hozzáadtál a modellhez.

  • Új előrejelzéseket ad a fennmaradó három időszeletre az újonnan kibővített modell alapján.

Az alábbi táblázat a 2. példa lekérdezésének eredményeit tartalmazza. Figyeld meg, hogy az első két érték, amit az M200 Europe esetében visszaadtak, pontosan ugyanazok, mint az általad megadott új értékek. Ez a viselkedés szándékosan van; Ha az új adatok vége után szeretnél előrejelzéseket indítani, meg kell határoznod egy kezdő és befejező időlépést.

Figyeld meg azt is, hogy nem adtál új adatokat a Csendes-óceáni régióról. Ezért az Analysis Services mind az öt időszeletre új előrejelzéseket ad.

Mennyiség: M200 Európa. EXTEND_MODEL_CASES:

$TIME Mennyiség
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

Mennyiség: M200 Pacific. EXTEND_MODEL_CASES:

$TIME Mennyiség
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

4. példa: Statisztikák visszaadása idősorozat előrejelzésben

A PredictTimeSeries függvény nem támogatja INCLUDE_STATISTICS paraméterként. Azonban a következő lekérdezés segítségével visszaadhatjuk az idősorozat lekérdezésének előrejelzési statisztikáit. Ez a megközelítés alkalmazható olyan modelleknél is, amelyeknek beágyazott táblázatoszlopai vannak.

Ebben a modellben a kiszámítható attribútum a mennyiség, ezért az PredictTimeSeries függvény első argumentumként kell használni [Quantity] . Ha a modell más, kiszámítható attribútumot használ, akkor más oszlopnevet is beválthatsz.

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'  

Mintaeredmények:

Modell régió t.$TIME t.ELŐREJELZÉS t.VARIANCIA t.STDEV
M200 Europe 2008.07.25. 00:00:00 121 11.6050581415597 3.40661975300439
M200 Europe 2008.08.25. 00:00:00 142 10.678201866621 3.26775180615374
M200 Europe 2008.09.25. 00:00:00 152 9.86897842568614 3.14149302493037
M200 Észak-Amerika 2008.07.25. 00:00:00 163 1.20434529288162 1.20434529288162
M200 Észak-Amerika 2008.08.25. 00:00:00 178 1.65031343900634 1.65031343900634
M200 Észak-Amerika 2008.09.25. 00:00:00 156 1.68969399185442 1.68969399185442

Note

Ebben a példában a FLATTENED kulcsszót használták, hogy az eredmények könnyebben megjeleníthetők legyenek egy táblázatban; viszont, ha a szolgáltatód támogatja a hierarchikus sorsorokat, akkor kihagyhatod a FLATTENED kulcsszót. Ha kihagyod a FLATTENED kulcsszót, a lekérdezés két oszlopot ad vissza: az első oszlop tartalmazza az adatsorozatot azonosító értéket [Model Region] , a második oszlop pedig a beágyazott statisztikai táblát.