cel mai simplu lucru e sa instalezi add-in-ul de Excel (produsul oficial, nu prototipul de Cloud) si sa rulezi Forecasting in Table Analysis Tools. Apoi, in ribbon-ul de Data Mining, apasa butonul Tracer si vei vedea exact tot continutul DMX trimis catre server.
Pas cu pas, cam astea sunt comenzile (scuze daca gresesc sintaxa, scriu din memorie)
// 1 -- structura
CREATE MINING STRUCTURE TSStruct
(
Data DATE KEY TIME,
[Value] DOUBLE CONTINUOUS
)
// 2 -- modelul --- missing value substitution acopera gaurile de weekend
ALTER MINING STRUCTURE TSStruct
ADD MINING MODEL TSModel
(
Data,
[Value] PREDICT
) USING Microsoft_Time_Series(Missing_Value_Substitution="Previous")
Antrenarea e un pic mai complicata. Fie creezi un obiect Data Source in Analysis Services care indica baza ta de date sau fisierul Excel, fie folosesti OPENROWSET ca sa citesti direct din Excel (sau alta sursa)
// 3 -- antrenare cu Data Source numit MyDS
INSERT INTO TSStruct (Data, [Value])
OPENQUERY(MyDS, 'SELECT Data, Value FROM MyTable ORDER BY Data')
// sau, direct din Excel, cu OPENROWSET
INSERT INTO TSStruct (Data, [Value])
OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\test\xltest.xls', [Data$])
Pentru asta:
- datele in Excel trebuie sa fie sortate dupa coloana Data
- Analysis Services trebuie configurat sa permita OPENROWSET si Jet :
- Allow Ad Hoc OpenRowset queries sa fie True
- Providers allowed in Openowset (sau asa ceva) trebuie fie sa includa Microsoft.jet..., fie sa contina exact "[All]"
In final, query de forecast pentru 56 de zile:
SELECT FLATTENED PredictTimeSeries([Value], 56) FROM TSModel
PS -- pentru executie din C# -- totul e exact ca in Ado.Net pentru SQL, doar ca in loc de System.Data.SqlClient se foloseste Microsoft.AnalysisServices.AdomdClient, conexiunea se numeste AdomdConnection iar obiectul comanda AdomdCommand. Si trebuie adaugata o referinta explicita la AdomdClient (System.data e default)
b o g d a n c r i v a t
[sql server|data mining]