Query sul contenuto (Data mining)

Si applica a: SQL Server 2019 e versioni precedenti di Analysis Services Azure Analysis Services Fabric/Power BI Premium

Importante

Il data mining è stato deprecato in SQL Server 2017 Analysis Services e ora è stato interrotto in SQL Server 2022 Analysis Services. La documentazione non viene aggiornata per le funzionalità deprecate e non più disponibili. Per altre informazioni, vedere Compatibilità con le versioni precedenti di Analysis Services.

Una query sul contenuto consente di estrarre informazioni sulle statistiche interne e sulla struttura del modello di data mining. Talvolta una query sul contenuto può fornire dettagli che non sono immediatamente disponibili nel visualizzatore. I risultati di una query sul contenuto possono essere utilizzati anche per estrarre a livello di codice informazioni per altri utilizzi.

In questa sezione vengono fornite informazioni generali sui tipi di informazioni che è possibile recuperare tramite una query sul contenuto, nonché la sintassi DMX generale per le query sul contenuto.

Query sul contenuto di base

esempi

Utilizzo dei risultati delle query

Query sul contenuto di base

È possibile creare query sul contenuto tramite il generatore delle query di stima, utilizzare i modelli di query sul contenuto DMX disponibili in SQL Server Management Studio o scrivere query direttamente in DMX. A differenza delle query di stima, non è necessario unire in join i dati esterni, pertanto le query sul contenuto sono facili da scrivere.

In questa sezione viene fornita una panoramica dei tipi di query sul contenuto che è possibile creare.

  • Le query sulla struttura di data mining o sui dati del case consentono di visualizzare i dati dettagliati utilizzati per il training.

  • Le query sul modello possono restituire modelli, elenchi di attributi, formule e così via.

Query sulla struttura e sui dati del case

DMX supporta le query sui dati memorizzati nella cache utilizzati per compilare strutture e modelli di data mining. Per impostazione predefinita, questa cache viene creata quando si definisce la struttura di data mining e viene popolata quando si elabora la struttura o il modello.

Avviso

Questa cache non può essere cancellata o eliminata se è necessario separare i dati in set di training e di testing. Se la cache viene cancellata, non è possibile eseguire una query sui dati del case.

Negli esempi seguenti vengono mostrati i modelli comuni utilizzati per la creazione di query sui dati del case o query sui dati nella struttura di data mining:

Ottenere tutti i case per un modello
SELECT FROM <model>.CASES

Utilizzare questa istruzione per recuperare colonne specifiche dai dati del case utilizzati per compilare un modello. È necessario disporre delle autorizzazioni drill-through sul modello per eseguire questa query.

Visualizzare tutti i dati inclusi nella struttura
SELECT FROM <structure>.CASES

Utilizzare questa istruzione per visualizzare tutti i dati presenti nella struttura, incluse le colonne non comprese in un determinato modello di data mining. Per recuperare i dati dalla struttura di data mining, è necessario disporre delle autorizzazioni drill-through sul modello e sulla struttura.

Ottenere l'intervallo di valori
SELECT DISTINCT RangeMin(<column>), RangeMax(<column>) FROM <model>

Utilizzare questa istruzione per individuare i valori minimo e massimo e la media di una colonna continua o dei bucket di una colonna DISCRETIZED.

Ottenere valori distinct
SELECT DISTINCT <column>FROM <model>

Utilizzare questa istruzione per recuperare tutti i valori di una colonna DISCRETE. Non utilizzare questa istruzione per le colonne DISCRETIZED, ma utilizzare le funzioni RangeMin e RangeMax .

Individuare i case utilizzati per il training di un modello o di una struttura
SELECT FROM <mining structure.CASES WHERE IsTrainingCase()

Utilizzare questa istruzione per ottenere il set di dati completo utilizzato per il training di un modello.

Individuare i case utilizzati per il testing di un modello o di una struttura
SELECT FROM <mining structure.CASES WHERE IsTestingCase()

Utilizzare questa istruzione per ottenere i dati riservati per il testing dei modelli di data mining correlati a una struttura specifica.

Eseguire il drill-through da uno schema del modello specifico ai dati del case sottostanti
SELECT FROM <model>.CASESWHERE IsTrainingCase() AND IsInNode(<node>)

Utilizzare questa istruzione per recuperare dati del case dettagliati da un modello sottoposto a training. È necessario specificare un determinato nodo, ad esempio è necessario conoscere l'ID del nodo del cluster, il ramo specifico di un albero delle decision, e così via. Inoltre, è necessario disporre delle autorizzazioni drill-through sul modello per eseguire questa query.

Query sugli schemi del modello, sulle statistiche e sugli attributi

Il contenuto di un modello di data mining è utile per molti scopi. Con una query sul contenuto del modello, è possibile:

  • Estrarre formule o probabilità per effettuare i calcoli.

  • Per un modello di associazione, recuperare le regole utilizzate per generare una stima.

  • Recuperare le descrizioni di regole specifiche in modo da poter utilizzare le regole in un'applicazione personalizzata.

  • Visualizzare le medie mobili rilevate da un modello Time Series.

  • Ottenere la formula di regressione per alcuni segmenti della linea di tendenza.

  • Recuperare informazioni utilizzabili sui clienti identificati come facenti parte di un cluster specifico.

Negli esempi seguenti vengono mostrati alcuni dei modelli comuni per la creazione di query sul contenuto del modello:

Ottenere schemi dal modello
SELECT FROM <model>.CONTENT

Utilizzare questa istruzione per recuperare informazioni dettagliate su nodi specifici del modello. A seconda del tipo di algoritmo, nel nodo possono essere contenute regole e formule, statistiche sul supporto e sulla varianza e così via.

Recuperare attributi utilizzati in un modello sottoposto a training
CALL System.GetModelAttributes(<model>)

Utilizzare questa stored procedure per recuperare l'elenco di attributi utilizzati da un modello. Queste informazioni sono utili per determinare gli attributi eliminati, ad esempio, in seguito alla selezione delle caratteristiche.

Recuperare il contenuto archiviato in una dimensione di data mining
SELECT FROM <model>.DIMENSIONCONTENT

Utilizzare questa istruzione per recuperare i dati da una dimensione di data mining.

Questo tipo di query è destinato principalmente a uso interno. Tuttavia, non tutti gli algoritmi supportano questa funzionalità. Il supporto è indicato da un flag nel set di righe dello schema MINING_SERVICES.

Se si sviluppa un proprio algoritmo plug-in, è possibile utilizzare questa istruzione per verificare il contenuto del modello per il testing.

Ottenere la rappresentazione PMML di un modello
SELECT * FROM <model>.PMML

Consente di ottenere un documento XML che rappresenta il modello in formato PMML. Non sono supportati tutti i tipi di modello.

Esempio

Sebbene alcuni contenuti dei modelli siano standard nei diversi algoritmi, alcune parti del contenuto variano significativamente a seconda dell'algoritmo utilizzato per compilare il modello. Pertanto, quando si crea una query sul contenuto, è necessario identificare le informazione del modello che sono utili per il modello specifico in uso.

Alcuni esempi vengono forniti in questa sezione per illustrare come la scelta di algoritmo influisca sul tipo di informazioni archiviato nel modello. Per altre informazioni sul contenuto del modello di data mining e sul contenuto specifico di ogni tipo di modello, vedere Contenuto del modello di data mining (Analysis Services - Data mining).For more information about mining model content, and the content that is specific to each model type, see Mining Model Content (Analysis Services - Data mining).

Esempio 1: Query sul contenuto su un modello di associazione

Tramite l'istruzione, SELECT FROM <model>.CONTENT, vengono restituiti tipi diversi di informazioni, a seconda del tipo di modello su cui si esegue una query. Per un modello di associazione, un'informazione chiave è il tipo di nodo. I nodi sono come contenitori per le informazioni nel contenuto del modello. In un modello di associazione, i nodi che rappresentano regole hanno un valore NODE_TYPE pari a 8, mentre i nodi che rappresentano i set di elementi hanno un valore NODE_TYPE pari a 7.

Pertanto, tramite la query seguente vengono restituiti i primi 10 set di elementi, classificati per supporto (ordinamento predefinito).

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

La query seguente consente di compilare su queste informazioni. La query restituisce tre colonne: l'ID del nodo, la regola completa e il prodotto sul lato destro del set di elementi, ovvero il prodotto previsto per essere associato ad altri prodotti come parte di un set di elementi.

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  

La parola chiave FLATTENED indica che il set di righe nidificato deve essere convertito in una tabella bidimensionale. L'attributo che rappresenta il prodotto sul lato destro della regola è contenuto nella tabella NODE_DISTRIBUTION; pertanto, si recupera solo la riga che contiene un nome di attributo aggiungendo un requisito in base al quale la lunghezza deve essere maggiore di 2.

Per rimuovere il nome del modello dalla terza colonna viene utilizzata una semplice funzione stringa. Generalmente il nome del modello viene aggiunto come prefisso ai valori delle colonne nidificate.

La clausola WHERE consente di specificare che il valore di NODE_TYPE deve essere 8, per recuperare solo le regole.

Per altri esempi, vedere Esempi di query sul modello di associazione.

Esempio 2: Query sul contenuto su un modello di alberi delle decisioni

Un modello di albero delle decisioni può essere utilizzato per la stima, nonché per la classificazione. In questo esempio si presuppone l'utilizzo del modello per la stima di un risultato, ma si desidera scoprire anche quali fattori o regole possono essere utilizzate per classificare il risultato.

In un modello di albero delle decisioni, i nodi sono utilizzati per rappresentare sia alberi sia nodi foglia. Nella didascalia per ogni nodo è contenuta la descrizione del percorso fino al risultato. Pertanto, per tracciare il percorso per qualsiasi particolare risultato, è necessario identificare il nodo in cui è contenuto e ottenere i dettagli per tale nodo.

Nella query di stima aggiungere la funzione di stima PredictNodeId (DMX) per ottenere l'ID del nodo correlato, come illustrato nell'esempio seguente:

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

Una volta ottenuto l'ID del nodo contenente il risultato, è possibile recuperare la regola o il percorso tramite cui viene spiegata la stima creando una query sul contenuto in cui sia incluso NODE_CAPTION, come illustrato di seguito:

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

Per altri esempi, vedere Esempi di query sul modello di alberi delle decisioni.

Utilizzo dei risultati delle query

Come dimostrato negli esempi, tramite le query sul contenuto vengono restituiti soprattutto set di righe tabulari, tuttavia possono essere incluse anche informazioni sulle colonne nidificate. È possibile rendere bidimensionale il set di righe restituito, tuttavia, in questo modo, l'utilizzo dei risultati può risultare più complesso. Il contenuto del nodo NODE_DISTRIBUTION in particolare è nidificato, ma in esso sono contenute informazioni molto interessanti sul modello.

Per ulteriori informazioni sull'utilizzo di set di righe gerarchici, vedere la specifica OLE DB su MSDN.

Vedere anche

Informazioni sull'istruzione DMX Select
Query di data mining