Příklady dotazů modelu time series

Platí pro: SQL Server 2019 a starší služby Analysis Services Azure Analysis Services Fabric/ Power BI Premium

Důležité

Dolování dat bylo v SQL Serveru 2017 Analysis Services zastaralé a nyní ukončeno ve službě SQL Server 2022 Analysis Services. Dokumentace se neaktualizuje pro zastaralé a ukončené funkce. Další informace najdete v tématu Zpětná kompatibilita služby Analysis Services.

Při vytváření dotazu na model dolování dat můžete vytvořit buď dotaz na obsah, který poskytuje podrobnosti o vzorech zjištěných v analýze, nebo můžete vytvořit prediktivní dotaz, který používá vzory v modelu k vytváření předpovědí pro nová data. Například dotaz na obsah pro model časových řad může poskytnout další podrobnosti o pravidelných strukturách, které byly zjištěny, zatímco prediktivní dotaz vám může poskytnout předpovědi pro dalších 5 až 10 časových řezů. Metadata o modelu můžete také načíst pomocí dotazu.

Tato část vysvětluje, jak vytvořit oba druhy dotazů pro modely založené na algoritmu Microsoft Time Series.

Dotazy na obsah

Načítání tipů k periodičnosti pro model

Načtení rovnice pro model ARIMA

Načtení rovnice pro model ARTxp

Prediktivní dotazy

Pochopení toho, kdy nahradit a kdy rozšířit data časových řad

Vytváření předpovědí pomocí EXTEND_MODEL_CASES

Vytváření předpovědí pomocí REPLACE_MODEL_CASES

Náhrada chybějící hodnoty v modelech časových řad

Získání informací o modelu časové řady

Dotaz na obsah modelu může poskytnout základní informace o modelu, například parametry použité při vytvoření modelu, čas posledního zpracování modelu. Následující příklad znázorňuje základní syntaxi pro dotazování obsahu modelu pomocí sad řádků schématu dolování dat.

Ukázkový dotaz 1: Načítání tipů pro periodicitu pro model

Periodicity nalezené v časové řadě můžete načíst dotazováním stromu ARIMA nebo stromu ARTXP. Periodická období dokončeného modelu ale nemusí být stejná jako období, která jste zadali jako rady při vytváření modelu. Pokud chcete načíst nápovědy, které byly zadány jako parametry při vytváření modelu, můžete provést dotaz na schéma obsahu dolovacího modelu pomocí následujícího příkazu DMX:

SELECT MINING_PARAMETERS   
FROM $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = '<model name>'  

Částečné výsledky:

PARAMETRY TĚŽBY
COMPLEXITY_PENALTY=0,1,MINIMUM_SUPPORT=10,PERIODICITY_HINT={1,3},....

Výchozí tip pro periodicitu je {1} a zobrazuje se ve všech modelech. Tento ukázkový model byl vytvořen s další nápovědou, která nemusí být v konečném modelu přítomna.

Poznámka:

Výsledky jsou zde zkráceny kvůli čitelnosti.

Ukázkový dotaz 2: Načtení rovnice pro model ARIMA

Rovnici modelu ARIMA můžete načíst dotazováním libovolného uzlu v jednotlivých stromech. Mějte na paměti, že každý strom v modelu ARIMA představuje jinou periodii a pokud existuje více datových řad, každá datová řada bude mít svou vlastní sadu periodických stromů. Proto pokud chcete načíst rovnici pro konkrétní datovou řadu, musíte nejprve identifikovat strom.

Například předpona technického poradce vám říká, že uzel je součástí stromu ARIMA, zatímco předpona TS se používá pro stromy ARTXP. Všechny kořenové stromy ARIMA najdete dotazováním obsahu modelu pro uzly s NODE_TYPE hodnotou 27. Hodnotu ATTRIBUTE_NAME můžete také použít k vyhledání kořenového uzlu ARIMA pro určitou datovou řadu. Tento příklad dotazu najde uzly ARIMA, které představují množství prodaného modelu R250 v oblasti Evropa.

SELECT NODE_UNIQUE_NAME  
FROM Forecasting.CONTENT  
WHERE ATTRIBUTE_NAME = 'R250 Europe: Quantity"  
AND NODE_TYPE = 27  

Pomocí tohoto ID uzlu můžete načíst podrobnosti o rovnici ARIMA pro tento strom. Následující příkaz DMX načte krátkou formu rovnice ARIMA pro datnou řadu. Načte také průsečík z vnořené tabulky NODE_DISTRIBUTION. V tomto příkladu je rovnice získána odkazem na jedinečné ID uzlu TA00000007. Možná ale budete muset použít jiné ID uzlu a můžete získat mírně odlišné výsledky z modelu.

SELECT FLATTENED NODE_CAPTION as [Short equation],   
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE   
FROM NODE_DISTRIBUTION) as t  
FROM Forecasting.CONTENT  
WHERE NODE_NAME = 'TA00000007'  

Příklady výsledků:

Krátká rovnice t.ATTRIBUTE_NAME t.ATTRIBUTE_VALUE
ARIMA (2 0,7)x(1;0;2)(12) R250 Europe:Množství(Intercept) 15.24....
ARIMA (2 0,7)x(1;0;2)(12) R250 Europe:Množství(Periodičnost) 1
ARIMA (2 0,7)x(1;0;2)(12) R250 Evropa:Množství(Periodičnost) 12

Další informace o tom, jak tyto informace interpretovat, naleznete v tématu Obsah modelu dolování pro modely časových řad (Analysis Services - Data Mining).

Ukázkový dotaz 3: Načtení rovnice pro model ARTXP

Pro model ARTxp se na každé úrovni stromu ukládají různé informace. Další informace o struktuře modelu ARTxp a o tom, jak interpretovat informace v rovnici, naleznete v tématu Obsah dolování modelu pro modely časových řad (Analysis Services - Data Mining).

Následující příkaz DMX načte informace o části stromu ARTxp, která představuje objem prodeje modelu R250 v Evropě.

Poznámka:

Název vnořeného sloupce tabulky VARIANCE musí být uzavřený v hranatých závorkách, aby se odlišil od vyhrazeného klíčového slova stejného názvu. Sloupce vnořené tabulky, PRAVDĚPODOBNOST a PODPORA, nejsou zahrnuty, protože jsou ve většině případů prázdné.

SELECT NODE_CAPTION as [Split information],   
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE,  
   [VARIANCE]  
   FROM NODE_DISTRIBUTION) AS t  
FROM Forecasting.CONTENT  
WHERE NODE_ATTRIBUTE_NAME = 'R250 Europe:Quantity'  
AND NODE_TYPE = 15  

Další informace o tom, jak tyto informace interpretovat, naleznete v tématu Obsah modelu dolování pro modely časových řad (Analysis Services - Data Mining).

Vytváření předpovědí v modelu časové řady

Od verze SQL Server 2008 Enterprise můžete do modelu časových řad přidat nová data a automaticky začlenit nová data do modelu. Do modelu dolování časových řad přidáte nová data jedním ze dvou způsobů:

  • Pomocí funkce PREDICTION JOIN připojte data z externího zdroje k trénovacím datům.

  • Pomocí dotazu s predikcí typu singleton můžete zadávat data po jednom řezu. Informace o tom, jak vytvořit dotaz jednotonové předpovědi, naleznete v tématu Nástroje pro dotazy dolování dat.

Vysvětlení chování operací nahrazení a rozšíření

Když do modelu časových řad přidáte nová data, můžete určit, jestli se mají trénovací data rozšířit nebo nahradit:

  • Rozšířit: Když rozšíříte datovou řadu, služba SQL Server Analysis Services přidá nová data na konec existujících trénovacích dat. Zvyšuje se také počet případů trénování.

    Rozšíření případů modelu je užitečné pro průběžné aktualizace modelu novými daty. Pokud například chcete, aby se trénovací sada v průběhu času zvětšovala, jednoduše byste model rozšířili.

    Chcete-li rozšířit data, vytvoříte PREDICTION JOIN na modelu časových řad, zadáte zdroj nových dat a použijete argument EXTEND_MODEL_CASES.

  • Nahradit: Když nahradíte data v datové řadě, služba SQL Server Analysis Services zachová vytrénovaný model, ale pomocí nových datových hodnot nahradí některé nebo všechny existující případy trénování. Proto se velikost trénovacích dat nikdy nemění, ale samotné případy se neustále nahrazují novějšími daty. Pokud zadáte dostatek nových dat, můžete trénovací data nahradit zcela novou řadou.

    Nahrazení případů modelu je užitečné, když chcete model vytrénovat na jedné sadě případů a pak ho použít na jinou datovou řadu.

    Pro nahrazení dat vytvoříte PREDICTION JOIN na modelu časové řady, zadáte zdroj nových dat a použijete argument REPLACE_MODEL_CASES.

Poznámka:

Při přidávání nových dat nelze provádět historické předpovědi.

Bez ohledu na to, zda trénovací data rozšíříte nebo nahradíte, předpovědi vždy začínají na časovém razítku na konci původní trénovací sady. Jinými slovy, pokud nová data obsahují n časových řezů a vy požadujete předpovědi pro časové kroky 1 až n, předpovědi se budou shodovat se stejným obdobím jako nová data a nebudete dostávat žádné nové předpovědi.

Pokud chcete získat nové předpovědi pro časová období, která se nepřekrývají s novými daty, musíte buď začít predikce v časovém řezu n+1, nebo se ujistit, že požadujete další časové řezy.

Předpokládejme například, že stávající model má data za šest měsíců. Tento model chcete rozšířit přidáním údajů o prodeji za poslední tři měsíce. Zároveň chcete předpovědět o dalších třech měsících. Pokud chcete získat pouze nové předpovědi při přidání nových dat, zadejte počáteční bod jako časový řez 4 a koncový bod jako časový řez 7. Můžete také požádat o celkem šest předpovědí, ale časové řezy prvních tří se překrývají s nově přidanými daty.

Příklady dotazů a další informace o syntaxi pro použití REPLACE_MODEL_CASES a EXTEND_MODEL_CASES najdete v tématu PredictTimeSeries (DMX).

Vytváření předpovědí pomocí EXTEND_MODEL_CASES

Chování předpovědi se liší v závislosti na tom, jestli rozšíříte nebo nahradíte případy modelu. Při rozšíření modelu se nová data připojí ke konci řady a zvýší se velikost trénovací sady. Časové řezy používané pro predikční dotazy však vždy začínají na konci původní řady. Proto pokud přidáte tři nové datové body a požádáte o šest předpovědí, první tři předpovědi se překrývají s novými daty. V tomto případě služba SQL Server Analysis Services vrátí skutečné nové datové body místo vytváření předpovědi, dokud se nebudou používat všechny nové datové body. Služba SQL Server Analysis Services pak provádí předpovědi založené na složených řadách.

Toto chování umožňuje přidat nová data a pak zobrazit skutečné údaje o prodeji v prediktivním grafu místo zobrazení projekcí.

Pokud například chcete přidat tři nové datové body a vytvořit tři nové předpovědi, postupujte takto:

  • Vytvořte PREDIKTIVNÍ SPOJENÍ v modelu časových řad a zadejte zdroj tříměsíčních nových dat.

  • Požádejte o předpovědi pro šest časových řezů Chcete-li to provést, zadejte 6 časových řezů, kde je počáteční bod časový řez 1 a koncový bod je časový řez 7. To platí jenom pro EXTEND_MODEL_CASES.

  • Pokud chcete získat pouze nové předpovědi, zadáte výchozí bod jako 4 a koncový bod jako 7.

  • Argument musíte použít EXTEND_MODEL_CASES.

    Skutečné údaje o prodeji se vrátí pro první tři časové řezy a předpovědi založené na rozšířeném modelu se vrátí pro další tři časové řezy.

Vytváření předpovědí pomocí REPLACE_MODEL_CASES

Když nahradíte případy v modelu, velikost modelu zůstane stejná, ale SQL Server Analysis Services nahradí jednotlivé případy v modelu. To je užitečné pro křížové předpovědi a scénáře, ve kterých je důležité udržovat trénovací sadu dat v konzistentní velikosti.

Některé z vašich obchodů například nemají dostatečná prodejní data. Obecný model můžete vytvořit průměrem prodeje pro všechna obchody v konkrétní oblasti a následným trénováním modelu. Pokud pak chcete vytvořit předpovědi pro obchod bez dostatečných prodejních dat, vytvoříte PREDICTION JOIN na nová prodejní data pro tento obchod. Když to uděláte, služba SQL Server Analysis Services zachová vzory odvozené z regionálního modelu, ale nahradí stávající trénovací případy daty z jednotlivých obchodů. Výsledkem je, že hodnoty předpovědi budou blíže ke spojnicím trendu pro jednotlivé prodejny.

Když použijete argument REPLACE_MODEL_CASES , služba SQL Server Analysis Services průběžně přidává na konec sady případů nové případy a odstraní odpovídající číslo od začátku sady případů. Pokud přidáte další nová data, než byla v původní trénovací sadě, služba SQL Server Analysis Services zahodí nejstarší data. Pokud zadáte dostatek nových hodnot, můžou být předpovědi založené na zcela nových datech.

Například jste model vytrénovali na sadě dat případu, která obsahovala 1 000 řádků. Pak přidáte 100 řádků nových dat. Služba SQL Server Analysis Services odstraní prvních 100 řádků z tréninkové sady a přidá na konec sady 100 řádků nových dat, čímž se dosáhne celkem 1000 řádků. Pokud přidáte 1100 řádků nových dat, použijí se jenom poslední 1 000 řádků.

Tady je další příklad. Pokud chcete přidat data za tři nové měsíce a provést tři nové předpovědi, proveďte následující akce:

  • Vytvořte FUNKCI PREDICTION JOIN v modelu časových řad a použijte argument REPLACE_MODEL_CASE .

  • Zadejte zdroj tříměsíčních nových dat. Tato data můžou být úplně jiná než původní trénovací data.

  • Požádejte o předpovědi pro šest časových řezů Chcete-li to provést, zadejte 6 časových řezů nebo zadejte počáteční bod jako časový řez 1 a koncový bod jako časový řez 7.

    Poznámka:

    Na rozdíl od EXTEND_MODEL_CASES nemůžete vrátit stejné hodnoty, které jste přidali jako vstupní data. Všech šest vrácených hodnot jsou předpovědi založené na aktualizovaném modelu, který zahrnuje stará i nová data.

    Poznámka:

    Když použijete REPLACE_MODEL_CASES, od časového razítka 1 získáte nové předpovědi založené na nových datech, která nahradí stará trénovací data.

Příklady dotazů a další informace o syntaxi pro použití REPLACE_MODEL_CASES a EXTEND_MODEL_CASES najdete v tématu PredictTimeSeries (DMX).

Náhrada chybějících hodnot v modelech časových řad

Když do modelu časových řad přidáte nová data pomocí příkazu PREDICTION JOIN , nová datová sada nemůže obsahovat žádné chybějící hodnoty. Pokud některé řady nejsou úplné, musí model zadat chybějící hodnoty pomocí hodnoty null, číselného průměru, konkrétního číselného průměru nebo předpovězené hodnoty. Pokud zadáte EXTEND_MODEL_CASES, služba SQL Server Analysis Services nahradí chybějící hodnoty předpověďmi na základě původního modelu. Pokud používáte REPLACE_MODEL_CASES, služba SQL Server Analysis Services nahradí chybějící hodnoty hodnotou, kterou zadáte v parametru MISSING_VALUE_SUBSTITUTION .

Seznam prediktivních funkcí

Všechny algoritmy Microsoftu podporují společnou sadu funkcí. Algoritmus Microsoft Time Series však podporuje další funkce uvedené v následující tabulce.

Prediktivní funkce Usage
Prodleva (DMX) Vrátí počet časových řezů mezi datem aktuálního případu a posledním datem trénovací sady.

Typickým použitím této funkce je identifikace nedávných případů trénování, abyste mohli načíst podrobná data o těchto případech.
PredictNodeId (DMX) Vrátí ID uzlu pro zadaný předvídatelný sloupec.

Typickým použitím této funkce je identifikace uzlu, který vygeneroval konkrétní predikovanou hodnotu, abyste mohli zkontrolovat případy přidružené k uzlu nebo načíst rovnici a další podrobnosti.
PredictStdev (DMX) Vrátí směrodatnou odchylku předpovědí v zadaném předvídatelném sloupci.

Tato funkce nahrazuje argument INCLUDE_STATISTICS, který není podporován pro modely časových řad.
PredictVariance (DMX) Vrátí odchylku předpovědí pro zadaný předvídatelný sloupec.

Tato funkce nahrazuje argument INCLUDE_STATISTICS, který není podporován pro modely časových řad.
PredictTimeSeries (DMX) Vrátí predikované historické hodnoty nebo budoucí predikované hodnoty pro časovou řadu.

Modely časových řad můžete dotazovat také pomocí obecné prediktivní funkce, predict (DMX).

Seznam funkcí, které jsou společné pro všechny algoritmy Microsoftu, najdete v tématu Obecné prediktivní funkce (DMX). Syntaxi konkrétních funkcí najdete v Odkazu na funkce Rozšíření dolování dat (DMX).

Viz také

Dotazy na dolování dat
Algoritmus Microsoft Time Series
Technické reference k algoritmu Microsoft Time Series
Obsah těžebního modelu pro modely časových řad (Analysis Services – Dolování dat)