StructureColumn (DMX)StructureColumn (DMX)

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)noDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Restituisce il valore della colonna della struttura corrispondente al case specificato oppure il valore di tabella relativo a una tabella nidificata nel case specificato.Returns the value of the structure column corresponding to the specified case, or the table value for a nested table in the specified case.

SintassiSyntax


StructureColumn('structure column name')  

ArgomentiArguments

nome-colonna-struttura.structure-column-name.
Nome della colonna della struttura di data mining di un case o di una tabella nidificata.The name of a case or nested table mining structure column.

Tipo di risultatoResult Type

Il tipo restituito dipende dal tipo della colonna a cui fa riferimento il <nome colonna della struttura > parametro.The type that is returned depends on the type of the column that is referenced in the <structure column name> parameter. Ad esempio, se la colonna della struttura di data mining a cui viene fatto riferimento contiene un valore scalare, la funzione restituisce un valore scalare.For example, if the mining structure column that is referenced contains a scalar value, the function returns a scalar value.

Se la colonna della struttura di data mining alla quale viene fatto riferimento è una tabella nidificata, la funzione restituisce un valore di tabella.If the mining structure column that is referenced is a nested table, the function returns a table value. Il valore di tabella restituito può essere utilizzato nella clausola FROM di un'istruzione sub-SELECT.The returned table value can be used in the FROM clause of a sub-SELECT statement.

OsservazioniRemarks

Questa funzione è polimorfica e può essere utilizzata in qualunque posizione in un'istruzione che consente espressioni, comprese un elenco di espressioni SELECT, un'espressione di condizione WHERE e un'espressione ORDER BY.This function is polymorphic and can be used anywhere in a statement that allows expressions, including a SELECT expression list, a WHERE condition expression, and an ORDER BY expression.

Il nome della colonna nella struttura di data mining è un valore stringa e di conseguenza deve essere racchiuso tra virgolette singole: ad esempio, StructureColumn(' colonna 1').The name of the column in the mining structure is a string value and as such must be enclosed in single quotation marks: for example, StructureColumn('column 1'). Nel caso in cui siano presenti più colonne con lo stesso nome, il nome è risolto nel contesto dell'istruzione SELECT che lo racchiude.If there are multiple columns that have the same name, the name is resolved in the context of the enclosing SELECT statement.

I risultati restituiti da una query tramite il StructureColumn funzione sono interessate dalla presenza di eventuali filtri nel modello.The results that are returned from a query using the StructureColumn function are affected by the presence of any filters on the model. ovvero il filtro del modello controlla i case inclusi nel modello di data mining.That is to say, the model filter controls the cases that are included in the mining model. Una query nella colonna della struttura può pertanto restituire solo i case utilizzati nel modello di data mining.Therefore, a query on the structure column can return only those cases that were used in the mining model. Per un esempio di codice che illustra l'effetto dei filtri del modello di data mining sia in tabelle del case che in tabelle nidificate, vedere la sezione Esempi di questo argomento.See the Examples section of this topic for a code sample that shows the effect of mining model filters on both case tables and a nested table.

Per ulteriori informazioni su come usare questa funzione in un'istruzione DMX SELECT, vedere modello SELECT FROM < >. DMX casi ( ) o struttura SELECT FROM < >. CASI.For more information about how to use this function in a DMX SELECT statement, see SELECT FROM <model>.CASES (DMX) or SELECT FROM <structure>.CASES.

messaggi di erroreError Messages

Se l'utente non dispone di autorizzazioni drill-through sulla struttura di data mining padre, viene generato l'errore di sicurezza seguente:The following security error is raised if the user does not have drillthrough permission on the parent mining structure:

L'utente '%{user/} non dispone dell'autorizzazione per eseguire il drill-through nella struttura di data mining padre del modello di data mining '%{model/}'.The '%{user/}' user does not have permission to drill through to the parent mining structure of the ‘%{model/}’ mining model.

Se il nome della colonna della struttura specificato non è valido, viene generato il messaggio di errore seguente:The following error message is raised if an invalid structure column name is specified:

Impossibile trovare la colonna della struttura di data mining '%{structure-column-name/}' nella struttura di data mining padre '%{structure/}' del contesto corrente (riga %{line/}, colonna %{column/}).The ‘%{structure-column-name/}’ mining structure column was not found in the ‘%{structure/}’ parent mining structure in the current context (line %{line/}, column %{column/}).

EsempiExamples

Per questi esempi sarà utilizzata la struttura di data mining riportata di seguito.We will use the following mining structure for these examples. Si noti che la struttura di data mining contiene due colonne di tabelle nidificate, Products e Hobbies.Note that the mining structure contains two nested table columns, Products and Hobbies. La tabella nidificata nella colonna Hobbies contiene una singola colonna che viene utilizzata come chiave per la tabella nidificata.The nested table in the Hobbies column has a single column that is used as the key for the nested table. La tabella nidificata nella colonna Products è una tabella nidificata complessa con una colonna chiave e altre colonne utilizzate per l'input.The nested table in the Products column is a complex nested table that has both a key column and other columns used for input. Negli esempi seguenti viene illustrato come progettare una struttura di data mining per includere colonne diverse, anche se un modello potrebbe non utilizzare tutte le colonne.The following examples illustrate how a data mining structure can be designed to include many different columns, even though a model may not use every column. Alcune di queste colonne potrebbero non essere utili a livello di modello per la generalizzazione dei modelli, ma rivelarsi molto indicate per il drill-through.Some of these columns may not be useful at the model level for generalizing patterns, but may be very useful for drillthrough.

CREATE MINING STRUCTURE [MyStructure]   
(  
CustomerName TEXT KEY,  
Occupation TEXT DISCRETE,  
Age LONG CONTINUOUS,  
MaritalStatus TEXT DISCRETE,  
Income LONG CONTINUOUS,  
Products  TABLE  
 (  
    ProductNameTEXT KEY,  
    Quantity LONG CONTINUOUS,  
    OnSale BOOLEAN  DISCRETE  
)  
 Hobbies  TABLE  
 (  
    Hobby KEY  
 ))  

Creare quindi un modello di data mining basato sulla struttura appena creata utilizzando il codice di esempio seguente:Next, create a mining model based on the structure you just created, using the following example code:

ALTER MINING STRUCTURE [MyStructure] ADD MINING MODEL [MyModel] (  
CustomerName,  
Age,  
MaritalStatus,  
Income PREDICT,  
Products   
(  
ProductName  
) WITH FILTER(NOT OnSale)  
) USING Microsoft_Decision_Trees   
WITH FILTER(EXISTS (Products))  

Esempio di query 1: Restituzione di una colonna dalla struttura di data miningSample Query 1: Returning a Column from the Mining Structure

Nella query di esempio seguente vengono restituite le colonne CustomerName e Age, definite come parte del modello di data mining.The following sample query returns the columns CustomerName and Age, which are defined as being part of the mining model. Tuttavia la query restituisce anche la colonna Age, che fa parte della struttura ma non è inclusa nel modello di data mining.However, the query also returns the column Age, which is part of the structure but not part of the mining model.

SELECT CustomerName, Age, StructureColumn(‘Occupation’) FROM MyModel.CASES   
WHERE Age > 30  

Si noti che per limitare i case ai clienti di età superiore ai 30 anni il filtro delle righe viene applicato a livello del modello.Note that the filtering of rows to restrict cases to customers over the age of 30 takes place at the level of the model. Pertanto, questa espressione non restituisce case inclusi nei dati della struttura ma non utilizzati dal modello.Therefore, this expression would not return cases that are included in the structure data but are not used by the model. Poiché la condizione di filtro utilizzata per creare il modello, EXISTS (Products), limita i case solo ai clienti che hanno acquistato prodotti, nella struttura ci potrebbero essere case che non vengono restituiti dalla query.Because the filter condition used to create the model (EXISTS (Products)) restricts cases to only those customers who purchased products, there might be cases in the structure that are not returned by this query.

Esempio di query 2: Applicazione di un filtro alla colonna della strutturaSample Query 2: Applying a Filter to the Structure Column

Nella query di esempio seguente, oltre alle colonne del modello CustomerName e Age e alla tabella nidificata Products, viene restituito il valore della colonna Quantity nella tabella nidificata che non fa parte del modello.The following sample query not only returns the model columns CustomerName and Age, and the nested table Products, but also returns the value of the column Quantity in the nested table, which is not part of the model.

SELECT CustomerName, Age,  
(SELECT ProductName, StructureColumn(‘Quantity’) FROM Products) FROM MA.CASES   
WHERE StructureColumn(‘Occupation’) = ‘Architect’  

Si noti che, in questo esempio viene applicato un filtro alla colonna della struttura per limitare i case ai clienti con occupazione 'Architect' (WHERE StructureColumn(‘Occupation’) = ‘Architect’).Note that, in this example, a filter is applied to the structure column to restrict the cases to customers whose occupation is ‘Architect’ (WHERE StructureColumn(‘Occupation’) = ‘Architect’). Poiché la condizione di filtro del modello viene sempre applicata ai case al momento della creazione del modello, vengono inclusi nei case del modello solo i case con almeno una riga risultante nella tabella Products.Because the model filter condition is always applied to the cases when the model is created, only cases that contain at least one qualifying row in the Products table are included in the model cases. Vengono pertanto applicati sia il filtro sulla tabella nidificata Products che il filtro sul case (‘Occupation’).Therefore, both the filter on the nested table Products and the filter on the case (‘Occupation’)are applied.

Esempio di query 3: Selezione di colonne da una tabella nidificataSample Query 3: Selecting Columns from a Nested Table

Nella query di esempio seguente vengono restituiti i nomi dei clienti che sono stati utilizzati come case di training dal modello.The following sample query returns the names of customers who were used as training cases from the model. Per ogni cliente, la query restituisce anche una tabella nidificata contenente i dettagli dell'acquisto.For each customer, the query also returns a nested table that contains the purchase details. Sebbene il modello include il ProductName colonna, il modello non utilizza il valore di ProductName colonna.Although the model includes the ProductName column, the model does not use the value of the ProductName column. Il modello controlla solo se il prodotto è stato acquistato al normale (NOT``OnSale) prezzo.The model only checks if the product was purchased at regular (NOT``OnSale) price. Questa query non solo restituisce il nome del prodotto, ma anche la quantità acquistata che non è inclusa nel modello.This query not only returns the product name, but also returns the quantity purchased, which is not included in the model.

SELECT CustomerName,    
(SELECT ProductName, StructureColumn('Quantity')FROM Products)   
FROM MyModel.CASES  

Si noti che non è possibile restituire la colonna ProductName o Quantity se non è attivato il drill-through nel modello di data mining.Note that you cannot return either the ProductName column or the Quantity column unless drillthrough is enabled on the mining model.

Esempio di query 4: Applicazione di filtri e restituzione di colonne di tabella nidificataSample Query 4: Filtering on and Returning Nested Table Columns

Nella query di esempio seguente vengono restituite le colonne della tabella nidificata e del case incluse nella struttura di data mining ma non nel modello.Thee following sample query returns the case and nested table columns that are included in the mining structure but not in the model. Sul modello è già applicato un filtro relativo alla presenza di prodotti OnSale, ma questa query aggiunge un filtro nella colonna della struttura di data mining, Quantity:The model is already filtered on the presence of OnSale products, but this query adds a filter on the mining structure column, Quantity:

SELECT CustomerName, Age, StructureColumn('Occupation'),   
(SELECT ProductName, StructureColumn('Quantity') FROM Products)   
FROM MyModel.CASES   
WHERE EXISTS (SELECT * FROM Products WHERE StructureColumn('Quantity')>1)  

Vedere ancheSee Also

Data Mining Extensions ( DMX ) Riferimento (funzione) Data Mining Extensions (DMX) Function Reference
DMX funzioni ( ) Functions (DMX)
Funzioni di stima generale ( DMX )General Prediction Functions (DMX)