Inhoudsquery's (gegevensanalyse)

Van toepassing op: SQL Server 2019 en eerder Analysis Services Azure Analysis Services Fabric/Power BI Premium

Belangrijk

Data mining werd verouderd verklaard in SQL Server 2017 Analysis Services en is nu stopgezet in SQL Server 2022 Analysis Services. Documentatie wordt niet bijgewerkt voor afgeschafte en stopgezette functies. Zie Analysis Services-compatibiliteit met eerdere versies voor meer informatie.

Een inhoudsquery is een manier om informatie over de interne statistieken en structuur van het mijnbouwmodel te extraheren. Soms kan een inhoudsquery details bevatten die niet direct beschikbaar zijn in de viewer. U kunt ook de resultaten van een inhoudsquery gebruiken om informatie programmatisch te extraheren voor andere toepassingen.

Deze sectie bevat algemene informatie over de typen informatie die u kunt ophalen met behulp van een inhoudsquery en de algemene DMX-syntaxis voor inhoudsquery's.

Basisinhoudsquery's

Examples

Werken met de queryresultaten

Basisinhoudsquery's

U kunt inhoudsquery's maken met behulp van de Prediction Query Builder, de DMX-inhoudsquerysjablonen gebruiken die zijn opgegeven in SQL Server Management Studio of query's rechtstreeks schrijven in DMX. In tegenstelling tot voorspellingsquery's hoeft u geen externe gegevens te koppelen, zodat inhoudsquery's eenvoudig kunnen worden geschreven.

Deze sectie bevat een overzicht van de typen inhoudsquery's die u kunt maken.

  • Met query's in de mijnbouwstructuur of casegegevens kunt u de gedetailleerde gegevens bekijken die zijn gebruikt voor training.

  • Query's op het model kunnen patronen, lijsten met kenmerken, formules enzovoort retourneren.

Query's over structuur- en casegegevens

DMX ondersteunt query's op de gegevens in de cache die worden gebruikt voor het bouwen van mijnbouwstructuren en -modellen. Deze cache wordt standaard gemaakt wanneer u de mijnbouwstructuur definieert en wordt ingevuld wanneer u de structuur of het model verwerkt.

Waarschuwing

Deze cache kan niet worden gewist of verwijderd als u gegevens wilt scheiden in trainings- en testsets. Als de cache is gewist, kunt u geen query's uitvoeren op de casegegevens.

In de volgende voorbeelden ziet u de algemene patronen voor het maken van query's op de casegegevens of query's op de gegevens in de mining-structuur:

Alle cases voor een model ophalen
SELECT FROM <model>.CASES

Gebruik deze instructie om opgegeven kolommen op te halen uit de casegegevens die worden gebruikt om een model te bouwen. U moet drillthrough-machtigingen voor het model hebben om deze query uit te voeren.

Alle gegevens weergeven die zijn opgenomen in de structuur
SELECT FROM <structure>.CASES

Gebruik deze instructie om alle gegevens weer te geven die zijn opgenomen in de structuur, inclusief kolommen die niet zijn opgenomen in een bepaald mijnbouwmodel. U moet drillthrough-machtigingen hebben voor het model, evenals voor de structuur, om gegevens op te halen uit de mijnbouwstructuur.

Bereik van waarden ophalen
SELECT DISTINCT RangeMin(<column>), RangeMax(<column>) FROM <model>

Gebruik deze instructie om de minimumwaarde, maximumwaarde en het gemiddelde van een doorlopende kolom of van de buckets van een KOLOM DISCRETIZED te vinden.

Afzonderlijke waarden ophalen
SELECT DISTINCT <column>FROM <model>

Gebruik deze instructie om alle waarden van een DISCRETE kolom op te halen. Gebruik deze instructie niet voor DISCRETIZED-kolommen; gebruik in plaats daarvan de functies RangeMin en RangeMax .

Zoek de cases die zijn gebruikt om een model of structuur te trainen
SELECT FROM <mining structure.CASES WHERE IsTrainingCase()

Gebruik deze instructie om de volledige set gegevens op te halen die zijn gebruikt in een training van een model.

Zoek de cases die worden gebruikt voor het testen van een model of structuur
SELECT FROM <mining structure.CASES WHERE IsTestingCase()

Gebruik deze instructie om de gegevens op te halen die zijn gereserveerd voor het testen van miningmodellen met betrekking tot een specifieke structuur.

Drillthrough van een specifiek modelpatroon naar onderliggende casegegevens
SELECT FROM <model>.CASESWHERE IsTrainingCase() AND IsInNode(<node>)

Gebruik deze instructie om gedetailleerde casegegevens op te halen uit een getraind model. U moet een specifiek knooppunt opgeven: u moet bijvoorbeeld de knooppunt-id van het cluster, de specifieke vertakking van de beslissingsstructuur, enzovoort kennen. Bovendien moet u drillthrough-machtigingen voor het model hebben om deze query uit te voeren.

Query's op modelpatronen, statistieken en kenmerken

De inhoud van een gegevensanalysemodel is nuttig voor veel doeleinden. Met een modelinhoudsquery kunt u het volgende doen:

  • Extraheer formules of waarschijnlijkheden voor het maken van uw eigen berekeningen.

  • Haal voor een koppelingsmodel de regels op die worden gebruikt om een voorspelling te genereren.

  • Haal de beschrijvingen van specifieke regels op, zodat u de regels in een aangepaste toepassing kunt gebruiken.

  • Bekijk de zwevende gemiddelden die zijn gedetecteerd door een tijdreeksmodel.

  • Haal de regressieformule op voor een bepaald segment van de trendlijn.

  • Haal bruikbare informatie op over klanten die zijn geïdentificeerd als onderdeel van een specifiek cluster.

In de volgende voorbeelden ziet u enkele veelvoorkomende patronen voor het maken van query's op de modelinhoud:

Patronen ophalen uit het model
SELECT FROM <model>.CONTENT

Gebruik deze instructie om gedetailleerde informatie over specifieke knooppunten in het model op te halen. Afhankelijk van het algoritmetype kan het knooppunt regels en formules bevatten, ondersteunings- en variantiestatistieken, enzovoort.

Kenmerken ophalen die worden gebruikt in een getraind model
CALL System.GetModelAttributes(<model>)

Gebruik deze opgeslagen procedure om de lijst met kenmerken op te halen die door een model zijn gebruikt. Deze informatie is handig voor het bepalen van kenmerken die zijn geëlimineerd als gevolg van functieselectie, bijvoorbeeld.

Inhoud ophalen die is opgeslagen in een dimensie voor gegevensanalyse
SELECT FROM <model>.DIMENSIONCONTENT

Gebruik deze instructie om de gegevens op te halen uit een dimensie voor gegevensanalyse.

Dit querytype is voornamelijk bedoeld voor intern gebruik. Niet alle algoritmen ondersteunen deze functionaliteit. Ondersteuning wordt aangegeven met een vlag in de MINING_SERVICES schemarijset.

Als u uw eigen invoegtoepassingsalgoritmen ontwikkelt, kunt u deze instructie gebruiken om de inhoud van uw model te controleren voor testen.

De PMML-weergave van een model ophalen
SELECT * FROM <model>.PMML

Hiermee haalt u een XML-document op dat het model in PMML-indeling vertegenwoordigt. Niet alle modeltypen worden ondersteund.

Voorbeelden

Hoewel sommige modelinhoud standaard is voor alle algoritmen, variëren sommige delen van de inhoud sterk, afhankelijk van het algoritme dat u hebt gebruikt om het model te bouwen. Wanneer u een inhoudsquery maakt, moet u daarom begrijpen welke informatie in het model het meest nuttig is voor uw specifieke model.

In deze sectie vindt u enkele voorbeelden om te laten zien hoe de keuze van het algoritme van invloed is op het soort informatie dat is opgeslagen in het model. Zie Mining Model Content (Analysis Services - Data Mining) voor meer informatie over het analyseren van modelinhoud en de inhoud die specifiek is voor elk modeltype.

Voorbeeld 1: Inhoudsquery op een koppelingsmodel

De instructie retourneert SELECT FROM <model>.CONTENTverschillende soorten informatie, afhankelijk van het type model waarop u een query uitvoert. Voor een koppelingsmodel is een belangrijk informatietype het type knooppunt. Knooppunten zijn net containers voor informatie in de modelinhoud. In een koppelingsmodel hebben knooppunten die regels vertegenwoordigen een NODE_TYPE waarde van 8, terwijl knooppunten die itemsets vertegenwoordigen een NODE_TYPE waarde van 7 hebben.

De volgende query retourneert dus de top 10 itemsets, gerangschikt op ondersteuning (de standaardvolgorde).

SELECT TOP 10 NODE_DESCRIPTION, NODE_PROBABILITY, SUPPORT  
FROM <model>.CONTENT WHERE NODE_TYPE = 7  

De volgende query bouwt voort op deze informatie. De query retourneert drie kolommen: de id van het knooppunt, de volledige regel en het product aan de rechterkant van de itemset, het product dat wordt voorspeld te worden gekoppeld aan een aantal andere producten als onderdeel van een itemset.

SELECT FLATTENED NODE_UNIQUE_NAME, NODE_DESCRIPTION,  
     (SELECT RIGHT(ATTRIBUTE_NAME, (LEN(ATTRIBUTE_NAME)-LEN('Association model name')))   
FROM NODE_DISTRIBUTION  
WHERE LEN(ATTRIBUTE_NAME)>2  
)   
AS RightSideProduct  
FROM [<Association model name>].CONTENT  
WHERE NODE_TYPE = 8   
ORDER BY NODE_SUPPORT DESC  

Het trefwoord AFVLAKKEN geeft aan dat de geneste rijenset moet worden geconverteerd naar een platgemaakte tabel. Het kenmerk dat het product aan de rechterkant van de regel vertegenwoordigt, bevindt zich in de tabel NODE_DISTRIBUTION; Daarom halen we alleen de rij met een kenmerknaam op door een vereiste toe te voegen dat de lengte groter is dan 2.

Een eenvoudige tekenreeksfunctie wordt gebruikt om de naam van het model uit de derde kolom te verwijderen. (Meestal wordt de modelnaam voorafgegaan door de waarden van geneste kolommen.)

De WHERE-component geeft aan dat de waarde van NODE_TYPE 8 moet zijn om alleen regels op te halen.

Zie Voorbeelden van koppelingsmodelquery's voor meer voorbeelden.

Voorbeeld 2: Inhoudsquery voor een Decision Trees-model

Een beslissingsstructuurmodel kan worden gebruikt voor voorspelling en voor classificatie. In dit voorbeeld wordt ervan uitgegaan dat u het model gebruikt om een resultaat te voorspellen, maar u wilt ook weten welke factoren of regels kunnen worden gebruikt om het resultaat te classificeren.

In een beslissingsstructuurmodel worden knooppunten gebruikt om zowel bomen als bladknooppunten weer te geven. Het bijschrift voor elk knooppunt bevat de beschrijving van het pad naar het resultaat. Als u het pad voor een bepaald resultaat wilt traceren, moet u daarom het knooppunt identificeren dat het bevat en de details voor dat knooppunt ophalen.

In uw voorspellingsquery voegt u de voorspellingsfunctie PredictNodeId (DMX) toe om de id van het gerelateerde knooppunt op te halen, zoals wordt weergegeven in het volgende voorbeeld:

SELECT  Predict([Bike Buyer]), PredictNodeID([Bike Buyer])   
FROM [<decision tree model name>]  
PREDICTION JOIN   
<input rowset>   

Zodra u de id hebt van het knooppunt dat het resultaat bevat, kunt u de regel of het pad ophalen waarin de voorspelling wordt uitgelegd door een inhoudsquery te maken die de NODE_CAPTION bevat, als volgt:

SELECT NODE_CAPTION  
FROM [<decision tree model name>]   
WHERE NODE_UNIQUE_NAME= '<node id>'  

Zie Voorbeelden van query's voor Decision Trees Model voor meer voorbeelden.

Werken met de queryresultaten

Zoals de voorbeelden laten zien, retourneren inhoudsquery's meestal tabellaire rijensets, maar kunnen ook gegevens uit geneste kolommen bevatten. U kunt de geretourneerde rijenset platmaken, maar dit kan ervoor zorgen dat u met resultaten complexer werkt. De inhoud van het NODE_DISTRIBUTION-knooppunt is met name genest, maar bevat veel interessante informatie over het model.

Zie de OLEDB-specificatie op MSDN voor meer informatie over het werken met hiërarchische rijensets.

Zie ook

Informatie over de DMX Select-instructie
Query's voor gegevensanalyse