Delen via


StructureColumn (DMX)

van toepassing op: SQL Server Analysis Services

Retourneert de waarde van de structuurkolom die overeenkomt met de opgegeven case of de tabelwaarde voor een geneste tabel in de opgegeven case.

Syntaxis

  
StructureColumn('structure column name')  

Argumenten

structuurkolomnaam.
De naam van een kolom met hoofdletters of geneste tabelanalyses.

Resultaattype

Het type dat wordt geretourneerd, is afhankelijk van het type kolom waarnaar wordt verwezen in de kolomnaam van de <structuur> parameter. Als de kolom met de mijnbouwstructuur waarnaar wordt verwezen bijvoorbeeld een scalaire waarde bevat, retourneert de functie een scalaire waarde.

Als de kolom met de mijnbouwstructuur waarnaar wordt verwezen een geneste tabel is, retourneert de functie een tabelwaarde. De geretourneerde tabelwaarde kan worden gebruikt in de FROM-component van een sub-SELECT-instructie.

Opmerkingen

Deze functie is polymorf en kan overal in een instructie worden gebruikt die expressies toestaat, waaronder een SELECT-expressielijst, een WHERE-voorwaardeexpressie en een ORDER BY-expressie.

De naam van de kolom in de mijnbouwstructuur is een tekenreekswaarde en moet als zodanig tussen enkele aanhalingstekens worden geplaatst: bijvoorbeeld StructureColumn('kolom 1'). Als er meerdere kolommen met dezelfde naam zijn, wordt de naam omgezet in de context van de instructie SELECT.

De resultaten die worden geretourneerd uit een query met behulp van de functie StructureColumn, worden beïnvloed door de aanwezigheid van filters in het model. Dat wil zeggen, het modelfilter bepaalt de gevallen die zijn opgenomen in het mijnbouwmodel. Daarom kan een query in de structuurkolom alleen de gevallen retourneren die zijn gebruikt in het mijnbouwmodel. Zie de sectie Voorbeelden van dit onderwerp voor een codevoorbeeld waarin het effect van miningmodelfilters op zowel casetabellen als een geneste tabel wordt weergegeven.

Zie SELECT FROM <model>voor meer informatie over het gebruik van deze functie in een DMX SELECT-instructie. CASES (DMX) of SELECT FROM <structuur>. CASES.

Foutberichten

De volgende beveiligingsfout wordt gegenereerd als de gebruiker geen drillthrough-machtiging heeft voor de bovenliggende mijnbouwstructuur:

De '%{user/}'-gebruiker is niet gemachtigd om in te zoomen op de bovenliggende mijnbouwstructuur van het '%{model/}'-miningmodel.

Het volgende foutbericht wordt weergegeven als er een ongeldige kolomnaam voor de structuur is opgegeven:

De mijnstructuurkolom '%{structure-column-name/}' is niet gevonden in de bovenliggende mijnstructuur '%{structure/}' in de huidige context (lijn %{lijn/}, kolom %{column/}).

Voorbeelden

Voor deze voorbeelden gebruiken we de volgende mijnbouwstructuur. Houd er rekening mee dat de mijnbouwstructuur twee geneste tabelkolommen bevat, Products en Hobbies. De geneste tabel in de kolom Hobbies heeft één kolom die wordt gebruikt als sleutel voor de geneste tabel. De geneste tabel in de Products kolom is een complexe geneste tabel met zowel een sleutelkolom als andere kolommen die worden gebruikt voor invoer. In de volgende voorbeelden ziet u hoe een gegevensanalysestructuur kan worden ontworpen om veel verschillende kolommen op te nemen, ook al gebruikt een model mogelijk niet elke kolom. Sommige van deze kolommen zijn mogelijk niet nuttig op modelniveau voor het generaliseren van patronen, maar kunnen erg nuttig zijn voor 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  
 ))  

Maak vervolgens een mijnbouwmodel op basis van de structuur die u zojuist hebt gemaakt, met behulp van de volgende voorbeeldcode:

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))  

Voorbeeldquery 1: Een kolom retourneren uit de mijnbouwstructuur

De volgende voorbeeldquery retourneert de kolommen CustomerName en Age, die worden gedefinieerd als onderdeel van het mijnbouwmodel. De query retourneert echter ook de kolom Age, die deel uitmaakt van de structuur, maar geen deel uitmaakt van het mijnbouwmodel.

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

Houd er rekening mee dat het filteren van rijen om aanvragen te beperken tot klanten ouder dan 30 jaar plaatsvindt op het niveau van het model. Daarom retourneert deze expressie geen cases die zijn opgenomen in de structuurgegevens, maar die niet door het model worden gebruikt. Omdat de filtervoorwaarde die wordt gebruikt voor het maken van het model (EXISTS (Products)) alleen geldt voor klanten die producten hebben gekocht, kunnen er gevallen zijn in de structuur die niet door deze query worden geretourneerd.

Voorbeeldquery 2: Een filter toepassen op de structuurkolom

De volgende voorbeeldquery retourneert niet alleen de modelkolommen CustomerName en Age, en de geneste tabel Products, maar retourneert ook de waarde van de kolom Quantity in de geneste tabel, die geen deel uitmaakt van het model.

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

Houd er rekening mee dat in dit voorbeeld een filter wordt toegepast op de structuurkolom om de gevallen te beperken tot klanten met de bezetting 'Architect' (WHERE StructureColumn('Occupation') = 'Architect'). Omdat de modelfiltervoorwaarde altijd wordt toegepast op de gevallen waarin het model wordt gemaakt, worden alleen gevallen opgenomen die ten minste één in aanmerking komende rij in de Products tabel bevatten in de modelcases. Daarom worden zowel het filter op de geneste tabel Products als het filter op de case ('Occupation')toegepast.

Voorbeeldquery 3: Kolommen selecteren uit een geneste tabel

De volgende voorbeeldquery retourneert de namen van klanten die zijn gebruikt als trainingscases van het model. Voor elke klant retourneert de query ook een geneste tabel die de aankoopgegevens bevat. Hoewel het model de ProductName kolom bevat, gebruikt het model niet de waarde van de ProductName kolom. Het model controleert alleen of het product is gekocht tegen normale (NOT``OnSale) prijs. Deze query retourneert niet alleen de productnaam, maar retourneert ook de gekochte hoeveelheid, die niet is opgenomen in het model.

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

Houd er rekening mee dat u de ProductName kolom of de Quantity kolom niet kunt retourneren, tenzij drillthrough is ingeschakeld voor het miningmodel.

Voorbeeldquery 4: Filteren op en retourneren van geneste tabelkolommen

De volgende voorbeeldquery retourneert de case- en geneste tabelkolommen die zijn opgenomen in de mijnbouwstructuur, maar niet in het model. Het model is al gefilterd op de aanwezigheid van OnSale producten, maar met deze query wordt een filter toegevoegd aan de kolom mijnstructuur, Quantity:

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

Zie ook

DMX-functieverwijzing (Data Mining Extensions)
DMX-( Functions)
algemene voorspellingsfuncties (DMX)