Megosztás:


StructureColumn (DMX)

A következőkre vonatkozik: SQL Server Analysis Services

A megadott esetnek megfelelő struktúraoszlop értékét, vagy egy beágyazott tábla táblaértékét adja vissza a megadott esetben.

Szintaxis

  
StructureColumn('structure column name')  

Érvek

structure-column-name.
Eset vagy beágyazott táblabányászati struktúraoszlop neve.

Eredmény típusa

A visszaadott típus a <struktúraoszlop neve> paraméterben hivatkozott oszlop típusától függ. Ha például a hivatkozott bányászati struktúra oszlop skaláris értéket tartalmaz, a függvény skaláris értéket ad vissza.

Ha a hivatkozott bányászati struktúraoszlop beágyazott tábla, a függvény egy táblaértéket ad vissza. A visszaadott táblaérték a SELECT alutasítás FROM záradékában használható.

Megjegyzések

Ez a függvény polimorfikus, és bárhol használható egy olyan utasításban, amely lehetővé teszi a kifejezéseket, beleértve a SELECT kifejezéslistát, a WHERE feltételkifejezést és az ORDER BY kifejezést.

A bányászati szerkezet oszlopának neve egy sztringérték, ezért egyetlen idézőjelbe kell foglalni: például StructureColumn('1. oszlop'). Ha több azonos nevű oszlop is létezik, a rendszer feloldja a nevet a belefoglaló SELECT utasítás kontextusában.

A StructureColumn függvénnyel visszaadott lekérdezések eredményeit a modell szűrőinek jelenléte befolyásolja. Vagyis a modellszűrő szabályozza a bányászati modellben szereplő eseteket. Ezért a struktúraoszlopon lévő lekérdezések csak a bányászati modellben használt eseteket adhatják vissza. A jelen témakör Példák szakaszában talál egy kódmintát, amely a bányászati modell szűrőinek hatását mutatja be mind az esettáblákra, mind a beágyazott táblákra.

További információ a függvény DMX SELECT utasításban való használatáról: SELECT FROM <modell>. CASES (DMX) vagy SELECT FROM <structure>. ESETEK.

Hibaüzenetek

A következő biztonsági hiba akkor jelentkezik, ha a felhasználó nem rendelkezik részletezési engedéllyel a szülőbányászati struktúrára:

A(z) "%{user/}" felhasználó nem rendelkezik engedéllyel a(z) "%{model/}" bányászati modell szülőbányászati struktúrájának részletezéséhez.

Érvénytelen struktúraoszlopnév megadása esetén a következő hibaüzenet jelenik meg:

A(z) "%{structure-column-name/}" bányászati struktúraoszlop nem található a(z) "%{structure/}" szülőbányászati struktúrában az aktuális környezetben (%{line/}, %{column/}).

Példák

Ezekhez a példákhoz a következő bányászati struktúrát fogjuk használni. Vegye figyelembe, hogy a bányászati struktúra két beágyazott táblaoszlopot tartalmaz, Products és Hobbies. A Hobbies oszlopban lévő beágyazott táblázat egyetlen oszlopot tartalmaz, amely a beágyazott tábla kulcsaként szolgál. A Products oszlopba ágyazott táblázat egy összetett beágyazott táblázat, amely a bemenethez használt kulcsoszlopot és más oszlopokat is tartalmazza. Az alábbi példák bemutatják, hogyan lehet egy adatbányászati struktúrát úgy tervezni, hogy sok különböző oszlopot tartalmazzon, annak ellenére, hogy egy modell nem minden oszlopot használ. Előfordulhat, hogy ezen oszlopok némelyike nem hasznos a modell szintjén a minták általánosításához, de a részletezéshez nagyon hasznos lehet.

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

Ezután hozzon létre egy bányászati modellt az imént létrehozott struktúra alapján, a következő példakód használatával:

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

1. minta lekérdezés: Oszlop visszaadása a bányászati struktúrából

Az alábbi minta lekérdezés a bányászati modell részeként definiált CustomerName és Ageoszlopokat adja vissza. A lekérdezés azonban a Ageoszlopot is visszaadja, amely a szerkezet része, de nem része a bányászati modellnek.

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

Vegye figyelembe, hogy a sorok szűrése az esetek 30 év feletti ügyfelekre való korlátozására a modell szintjén történik. Ezért ez a kifejezés nem ad vissza olyan eseteket, amelyek szerepelnek a struktúraadatokban, de a modell nem használja. Mivel a modell létrehozásához használt szűrőfeltétel (EXISTS (Products)) csak azokra az ügyfelekre korlátozza az eseteket, akik termékeket vásároltak, előfordulhatnak olyan esetek a struktúrában, amelyeket ez a lekérdezés nem ad vissza.

2. minta lekérdezés: Szűrő alkalmazása a struktúraoszlopra

Az alábbi minta lekérdezés nem csak a modelloszlopokat CustomerName és Age, valamint a beágyazott tábla Productsadja vissza, hanem a beágyazott táblában lévő Quantity oszlop értékét is visszaadja, amely nem része a modellnek.

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

Vegye figyelembe, hogy ebben a példában egy szűrőt alkalmazunk a struktúraoszlopra, amely korlátozza az eseteket azokra az ügyfelekre, akiknek a foglalkozása "Architect" (WHERE StructureColumn('Occupation') = 'Architect'). Mivel a modellszűrési feltétel mindig a modell létrehozásakor érvényesül, a modelles esetek csak azokat az eseteket tartalmazzák, amelyek a Products tábla legalább egy megfelelő sorát tartalmazzák. Ezért a beágyazott tábla szűrője Products és az eset szűrője ('Occupation')lesz alkalmazva.

3. minta lekérdezés: Oszlopok kijelölése beágyazott táblából

Az alábbi minta lekérdezés azoknak az ügyfeleknek a nevét adja vissza, akiket betanítási esetként használtak a modellből. Minden ügyfél esetében a lekérdezés egy beágyazott táblát is visszaad, amely tartalmazza a vásárlás részleteit. Bár a modell tartalmazza a ProductName oszlopot, a modell nem használja a ProductName oszlop értékét. A modell csak azt ellenőrzi, hogy a terméket normál (NOT``OnSale) áron vásárolták-e meg. Ez a lekérdezés nem csak a termék nevét adja vissza, hanem a megvásárolt mennyiséget is, amely nem szerepel a modellben.

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

Vegye figyelembe, hogy a ProductName vagy a Quantity oszlop csak akkor adható vissza, ha a részletezés engedélyezve van a bányászati modellen.

4. minta lekérdezés: Beágyazott táblaoszlopok szűrése és visszaadása

Az alábbi minta lekérdezés a bányaszerkezetben szereplő, de a modellben nem szereplő kis- és nagybetűket és beágyazott táblaoszlopokat adja vissza. A modell már szűrve van OnSale termékek jelenlétére, de ez a lekérdezés hozzáad egy szűrőt a bányászati struktúra oszlophoz, Quantity:

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

Lásd még:

adatbányászati bővítmények (DMX) függvényeinek referencia-
functions (DMX)
Általános előrejelzési függvények (DMX)