Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
SQL Server 2019 och tidigare Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
Viktigt!
Datautvinningen upphörde i SQL Server 2017 Analysis Services och upphörde nu i SQL Server 2022 Analysis Services. Dokumentationen uppdateras inte för inaktuella och utgångna funktioner. Mer information finns i Analysis Services bakåtkompatibilitet.
Målet med ett typiskt datautvinningsprojekt är att använda gruvmodellen för att göra förutsägelser. Du kanske till exempel vill förutsäga den förväntade stilleståndstiden för ett visst kluster av servrar, eller generera en poäng som anger om segment av kunder sannolikt kommer att svara på en reklamkampanj. Om du vill göra allt detta skapar du en förutsägelsefråga.
Funktionellt finns det olika typer av förutsägelsefrågor som stöds i SQL Server, beroende på typen av indata till frågan:
| Frågetyp | Frågealternativ |
|---|---|
| Singleton-förutsägelsefrågor | Använd en singleton-fråga när du vill förutsäga utfall för ett enda nytt ärende eller flera nya fall. Du anger indatavärdena direkt i frågan och frågan körs som en enda session. |
| Batch-förutsägelser | Använd batchförutsägelser när du har externa data som du vill mata in i modellen för att använda som grund för förutsägelser. Om du vill göra förutsägelser för en hel uppsättning data mappar du data i den externa källan till kolumnerna i modellen och anger sedan vilken typ av förutsägelsedata du vill mata ut. Frågan för hela datamängden körs i en enda session, vilket gör det här alternativet mycket effektivare än att skicka flera upprepade frågor. |
| Förutsägelser om tidsserier | Använd en tidsseriefråga när du vill förutsäga ett värde för ett antal framtida steg. SQL Server Data Mining innehåller också följande funktioner i tidsseriefrågor: Du kan utöka en befintlig modell genom att lägga till nya data som en del av frågan och göra förutsägelser baserat på den sammansatta serien. Du kan använda en befintlig modell för en ny dataserie med hjälp av alternativet REPLACE_MODEL_CASES. Du kan utföra korsförutsägelse. |
I följande avsnitt beskrivs den allmänna syntaxen för förutsägelsefrågor, de olika typerna av förutsägelsefrågor och hur du arbetar med resultatet av förutsägelsefrågor.
Grundläggande frågedesign för förutsägelse
Arbeta med resultatet av frågor
Grundläggande frågedesign för förutsägelse
När du skapar en förutsägelse anger du vanligtvis några nya data och ber modellen att generera en förutsägelse baserat på nya data.
I en batchförutsägelsefråga mappar du modellen till en extern datakälla med hjälp av en förutsägelsekoppling.
I en singleton-förutsägelsefråga skriver du ett eller flera värden som ska användas som indata. Du kan skapa flera förutsägelser med hjälp av en singleton-förutsägelsefråga. Men om du behöver skapa många förutsägelser är prestandan bättre när du använder en batchfråga.
Både singleton- och batchförutsägelsefrågor använder syntaxen PREDICTION JOIN för att definiera nya data. Skillnaden är på hur indatasidan av prediktionskopplingen anges.
I en batchförutsägelsefråga kommer data från en extern datakälla som anges med hjälp av OPENQUERY-syntaxen.
I en förutsägelseförfrågan av typen singleton anges data direkt som en del av förfrågan.
För tidsseriemodeller krävs inte alltid indata. det är möjligt att göra förutsägelser med bara de data som redan finns i modellen. Men om du anger nya indata måste du bestämma om du ska använda nya data för att uppdatera och utöka modellen, eller ersätta den ursprungliga serien med data som användes i modellen. Mer information om dessa alternativ finns i Frågeexempel för Tidsseriemodell.
Lägga till förutsägelsefunktioner
Förutom att förutsäga ett värde kan du anpassa en förutsägelsefråga för att returnera olika typer av information som är relaterade till förutsägelsen. Om förutsägelsen till exempel skapar en lista över produkter som ska rekommenderas till en kund, kanske du också vill returnera sannolikheten för varje förutsägelse, så att du kan rangordna dem och endast presentera de främsta rekommendationerna för användaren.
Det gör du genom att lägga till förutsägelsefunktioner i frågan. Varje modell eller frågetyp stöder specifika funktioner. Till exempel stöder klustringsmodeller särskilda förutsägelsefunktioner som ger extra information om de kluster som skapats av modellen, medan tidsseriemodeller har funktioner som beräknar skillnader över tid. Det finns också allmänna förutsägelsefunktioner som fungerar med nästan alla modelltyper. En lista över förutsägelsefunktioner som stöds i olika typer av frågor finns i det här avsnittet DMX-referensen: General Prediction Functions (DMX).
Skapa Singleton Prediction-frågor
En singleton-förutsägelsefråga är användbar när du vill skapa snabba förutsägelser i realtid. Ett vanligt scenario kan vara att du har fått information från en kund, kanske genom att använda ett formulär på en webbplats, och du vill skicka dessa data som indata till en singleton-förutsägelsefråga. När en kund till exempel väljer en produkt från en lista kan du använda det valet som indata till en fråga som förutsäger de bästa produkterna att rekommendera.
Singleton-förutsägelsefrågor kräver inte en separat tabell som innehåller indata. I stället anger du en eller flera rader med värden som indata till modellen, och förutsägelsen eller förutsägelserna returneras i realtid.
Varning
Trots namnet gör singleton-förutsägelsefrågor inte bara enskilda förutsägelser– du kan generera flera förutsägelser för varje uppsättning indata. Du anger flera indatafall genom att skapa en SELECT-instruktion för varje indatafall och kombinera dem med UNION-operatorn.
När du skapar en singleton-förutsägelsefråga måste du ange nya data till modellen i form av en FÖRUTSÄGELSEANSLUTNING. Det innebär att även om du inte mappar till en faktisk tabell måste du se till att de nya data matchar de befintliga kolumnerna i gruvmodellen. Om de nya datakolumnerna och de nya data matchar exakt mappar SQL Server Analysis Services kolumnerna åt dig. Detta kallas för EN NATURLIG FÖRUTSÄGELSEANSLUTNING. Men om kolumnerna inte matchar, eller om de nya data inte innehåller samma typ och mängd data som finns i modellen, måste du ange vilka kolumner i modellkartan som ska mappas till nya data eller ange de värden som saknas.
Batch Prediction-förfrågningar
En batchförutsägelsefråga är användbar när du har externa data som du vill använda för att göra förutsägelser. Du kan till exempel ha skapat en modell som kategoriserar kunder efter deras onlineaktivitet och inköpshistorik. Du kan använda modellen i en lista över nyförvärvade leads, skapa prognoser för försäljning eller identifiera mål för föreslagna kampanjer.
När du utför en förutsägelsekoppling måste du mappa kolumnerna i modellen till kolumnerna i den nya datakällan. Därför måste den datakälla du väljer för indata vara något som liknar den data som finns i modellen. Den nya informationen behöver inte matcha exakt och kan vara ofullständig. Anta till exempel att modellen har tränats med hjälp av information om inkomst och ålder, men kundlistan som du använder för förutsägelser har ålder men ingenting om inkomst. I det här scenariot kan du fortfarande mappa de nya data till modellen och skapa en förutsägelse för varje kund. Men om inkomsten var en viktig förutsägelse för modellen skulle bristen på fullständig information påverka kvaliteten på förutsägelserna.
För att få bästa resultat bör du ansluta så många matchande kolumner som möjligt mellan nya data och modellen. Frågan lyckas dock även om det inte finns några matchningar. Om inga kolumner är anslutna returnerar frågan marginalförutsägelsen, vilket motsvarar instruktionen SELECT <predictable-column> FROM <model> utan en PREDICTION JOIN-sats.
När du har mappat alla relevanta kolumner kör du frågan och SQL Server Analysis Services gör förutsägelser för varje rad i nya data baserat på mönster i modellen. Du kan spara resultatet i en ny tabell i datakällvyn som innehåller externa data, eller så kan du kopiera och klistra in data genom att använda SQL Server Data Tools eller SQL Server Management Studio.
Varning
Om du använder designern i SQL Server Data Tools måste den externa datakällan först definieras som en datakällvy.
Om du använder DMX för att skapa en förutsägelsekoppling kan du ange den externa datakällan med hjälp av kommandona OPENQUERY, OPENROWSET eller SHAPE. Standardmetoden för dataåtkomst i DMX-mallarna är OPENQUERY. Information om dessa metoder finns i <källdatafråga>.
Förutsägelser i tidsserieminingmodeller
Tidsseriemodeller skiljer sig från andra typer av modeller. Du kan antingen använda modellen som den är för att skapa förutsägelser, eller så kan du ange nya data till modellen för att uppdatera modellen och skapa förutsägelser baserat på de senaste trenderna. Om du lägger till nya data kan du ange hur nya data ska användas.
Om du utökar modellfallen innebär det att du lägger till nya data i den befintliga dataserien i tidsseriemodellen. Hädanefter baseras förutsägelserna på den nya kombinerade serien. Det här alternativet är bra när du bara vill lägga till några datapunkter till en befintlig modell.
Anta till exempel att du har en befintlig tidsseriemodell som har tränats på försäljningsdata från föregående år. När du har samlat in flera månaders nya försäljningsdata bestämmer du dig för att uppdatera dina försäljningsprognoser för det aktuella året. Du kan skapa en förutsägelsekoppling som uppdaterar modellen genom att lägga till nya data och utöka modellen för att göra nya förutsägelser.
Att ersätta modellfallen innebär att du behåller den tränade modellen, men ersätter de underliggande fallen med en ny uppsättning ärendedata. Det här alternativet är användbart när du vill behålla trenden i modellen, men tillämpa det på en annan uppsättning data.
Din ursprungliga modell kan till exempel ha tränats på en uppsättning data med mycket höga försäljningsvolymer. när du ersätter underliggande data med en ny serie (kanske från ett lager med lägre försäljningsvolym) bevarar du trenden, men förutsägelserna börjar från värdena i ersättningsserien.
Oavsett vilken metod du använder är utgångspunkten för förutsägelser alltid slutet på den ursprungliga serien.
Mer information om hur du skapar förutsägelsekopplingar för tidsseriemodeller finns i Frågeexempel för Tidsseriemodell eller PredictTimeSeries (DMX)..
Arbeta med resultatet av en förutsägelsefråga
Alternativen för att spara resultatet av en datautvinningsförutsägelsefråga skiljer sig beroende på hur du skapar frågan.
När du skapar en fråga med Prediction Query Builder i SQL Server Management Studio eller SQL Server Data Tools kan du spara resultatet av en förutsägelsefråga till en befintlig SQL Server Analysis Services-datakälla. Mer information finns i Visa och spara resultatet av en förutsägelsefråga.
När du skapar förutsägelsefrågor med DMX i frågefönstret i SQL Server Management Studio kan du använda frågeutdataalternativen för att spara resultatet i en fil eller i fönstret Frågeresultat som text eller i ett rutnät. Mer information finns i Fråge- och textredigerare (SQL Server Management Studio).
När du kör en förutsägelsefråga med hjälp av Integration Services-komponenterna ger uppgiften möjlighet att skriva resultaten till en databas med hjälp av en tillgänglig ADO.NET-anslutningshanterare eller OLEDB-anslutningshanterare. Mer information finns i Data Mining Query-uppgift.
Det är viktigt att förstå att resultatet av en förutsägelsefråga inte liknar resultatet av en fråga i en relationsdatabas, som alltid returnerar en enda rad med relaterade värden. Varje DMX-förutsägelsefunktion som du lägger till i en fråga returnerar en egen raduppsättning. När du gör en förutsägelse i ett enskilt fall kan resultatet därför bli ett förutsagt värde tillsammans med flera kolumner med kapslade tabeller som innehåller ytterligare information.
Om du kombinerar flera funktioner i en fråga kombineras returresultaten som en hierarkisk raduppsättning. Anta till exempel att du använder en tidsseriemodell för att förutsäga framtida värden för försäljningsbelopp och försäljningskvantitet, med hjälp av en fråga som den här DMX-instruktionen:
SELECT
PredictTimeSeries([Forecasting].[Amount]) as [PredictedAmount]
, PredictTimeSeries([Forecasting].[Quantity]) as [PredictedQty]
FROM
[Forecasting]
Resultatet av den här frågan är två kolumner, en för varje förutsagd serie, där varje rad innehåller en kapslad tabell med de förutsagda värdena:
PredictedAmount
| $TIME | Mängd |
|---|---|
| 201101 | 172067.11 |
| $TIME | Mängd |
|---|---|
| 201102 | 363390.68 |
PredictedQty
| $TIME | Kvantitet |
|---|---|
| 201101 | 77 |
| $TIME | Kvantitet |
|---|---|
| 201102 | 260 |
Om providern inte kan hantera hierarkiska rader kan du platta ut resultatet med hjälp av nyckelordet FLATTEN i förutsägelsefrågan. Mer information, inklusive exempel på utplattade rader, finns i SELECT (DMX).
Se även
Innehållsfrågor (datautvinning)
Datadefinitionsfrågor (datautvinning)