Udostępnij za pośrednictwem


Kolumna struktury (DMX)

Dotyczy: usług SQL Server Analysis Services

Zwraca wartość kolumny struktury odpowiadającej określonej wielkości liter lub wartość tabeli dla tabeli zagnieżdżonej w określonym przypadku.

Składnia

  
StructureColumn('structure column name')  

Argumenty

structure-column-name.
Nazwa kolumny struktury wyszukiwania tabel lub zagnieżdżonych tabel.

Typ wyniku

Zwracany typ zależy od typu kolumny, do którego odwołuje się <nazwa kolumny struktury> parametru. Jeśli na przykład kolumna struktury wyszukiwania, do którego się odwołuje, zawiera wartość skalarną, funkcja zwraca wartość skalarną.

Jeśli kolumna struktury wyszukiwania, do którego się odwołuje, jest tabelą zagnieżdżona, funkcja zwraca wartość tabeli. Zwrócona wartość tabeli może być używana w klauzuli FROM instrukcji sub-SELECT.

Uwagi

Ta funkcja jest polimorficzna i może być używana w dowolnym miejscu instrukcji, która umożliwia wyrażenia, w tym listę wyrażeń SELECT, wyrażenie warunku WHERE i wyrażenie ORDER BY.

Nazwa kolumny w strukturze wyszukiwania jest wartością ciągu i jako taka musi być ujęta w pojedynczy cudzysłów: na przykład StructureColumn('kolumna 1'). Jeśli istnieje wiele kolumn o tej samej nazwie, nazwa jest rozpoznawana w kontekście otaczającej instrukcji SELECT.

Wyniki zwracane z zapytania przy użyciu funkcji StructureColumn mają wpływ na obecność filtrów w modelu. Oznacza to, że filtr modelu kontroluje przypadki uwzględnione w modelu wyszukiwania. W związku z tym zapytanie w kolumnie struktury może zwracać tylko te przypadki, które zostały użyte w modelu wyszukiwania. Zobacz sekcję Przykłady tego tematu, aby zapoznać się z przykładem kodu, który pokazuje wpływ filtrów modelu wyszukiwania na tabele przypadków i zagnieżdżonej tabeli.

Aby uzyskać więcej informacji na temat używania tej funkcji w instrukcji DMX SELECT, zobacz SELECT FROM <model>. PRZYPADKI (DMX) lub SELECT ZE struktury <>. PRZYPADKI.

Komunikaty o błędach

Jeśli użytkownik nie ma uprawnień przeglądania szczegółowego w nadrzędnej strukturze wyszukiwania, zostanie zgłoszony następujący błąd zabezpieczeń:

Użytkownik "%{user/}" nie ma uprawnień do przechodzenia do nadrzędnej struktury górniczej modelu%{model/}.

Jeśli określono nieprawidłową nazwę kolumny struktury, zostanie zgłoszony następujący komunikat o błędzie:

Kolumna struktury wyszukiwania "%{structure-column-name/}" nie została znaleziona w nadrzędnej strukturze wyszukiwania "%{structure/}" w bieżącym kontekście (wiersz %{line/}, kolumna %{column/}).

Przykłady

W tych przykładach użyjemy następującej struktury wyszukiwania. Należy pamiętać, że struktura wyszukiwania zawiera dwie zagnieżdżone kolumny tabeli, Products i Hobbies. Tabela zagnieżdżona w kolumnie Hobbies zawiera jedną kolumnę, która jest używana jako klucz dla zagnieżdżonej tabeli. Tabela zagnieżdżona w kolumnie Products to złożona tabela zagnieżdżona, która zawiera zarówno kolumnę klucza, jak i inne kolumny używane do wprowadzania danych wejściowych. W poniższych przykładach pokazano, jak można zaprojektować strukturę wyszukiwania danych w celu uwzględnienia wielu różnych kolumn, mimo że model może nie używać każdej kolumny. Niektóre z tych kolumn mogą nie być przydatne na poziomie modelu do uogólniania wzorców, ale mogą być bardzo przydatne w przypadku przeglądania szczegółowego.

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

Następnie utwórz model wyszukiwania na podstawie właśnie utworzonej struktury przy użyciu następującego przykładowego kodu:

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

Przykładowe zapytanie 1: zwracanie kolumny ze struktury wyszukiwania

Poniższe przykładowe zapytanie zwraca kolumny CustomerName i Age, które są zdefiniowane jako część modelu wyszukiwania. Jednak zapytanie zwraca również kolumnę Age, która jest częścią struktury, ale nie jest częścią modelu wyszukiwania.

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

Należy pamiętać, że filtrowanie wierszy w celu ograniczenia przypadków do klientów w wieku powyżej 30 lat odbywa się na poziomie modelu. W związku z tym to wyrażenie nie zwraca przypadków, które są uwzględnione w danych struktury, ale nie są używane przez model. Ponieważ warunek filtru użyty do utworzenia modelu (EXISTS (Products)) ogranicza przypadki tylko do tych klientów, którzy kupili produkty, w strukturze, które nie są zwracane przez to zapytanie.

Przykładowe zapytanie 2: stosowanie filtru do kolumny Struktury

Poniższe przykładowe zapytanie nie tylko zwraca kolumny modelu CustomerName i Age, a zagnieżdżona tabela Products, ale także zwraca wartość kolumny Quantity w tabeli zagnieżdżonej, która nie jest częścią modelu.

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

Należy pamiętać, że w tym przykładzie filtr jest stosowany do kolumny struktury w celu ograniczenia przypadków do klientów, których zawód to "Architekt" (WHERE StructureColumn('Occupation') = 'Architect'). Ponieważ warunek filtru modelu jest zawsze stosowany do przypadków utworzenia modelu, tylko przypadki zawierające co najmniej jeden wiersz kwalifikujący w tabeli Products są uwzględnione w przypadkach modelu. W związku z tym oba filtry w zagnieżdżonej tabeli Products i filtr w przypadku ('Occupation')są stosowane.

Przykładowe zapytanie 3: wybieranie kolumn z tabeli zagnieżdżonej

Poniższe przykładowe zapytanie zwraca nazwy klientów, którzy byli przyzwyczajeni do trenowania z modelu. Dla każdego klienta zapytanie zwraca również zagnieżdżona tabelę zawierającą szczegóły zakupu. Mimo że model zawiera kolumnę ProductName, model nie używa wartości kolumny ProductName. Model sprawdza tylko, czy produkt został zakupiony w ramach regularnego (NOT``OnSale) ceny. To zapytanie nie tylko zwraca nazwę produktu, ale także zwraca kupioną ilość, która nie jest uwzględniona w modelu.

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

Należy pamiętać, że nie można zwrócić kolumny ProductName ani kolumny Quantity, chyba że przeglądanie szczegółowe jest włączone w modelu wyszukiwania.

Przykładowe zapytanie 4: filtrowanie i zwracanie zagnieżdżonych kolumn tabeli

Poniższe przykładowe zapytanie zwraca wielkość liter i zagnieżdżone kolumny tabeli, które są uwzględnione w strukturze wyszukiwania, ale nie w modelu. Model jest już filtrowany pod względem obecności OnSale produktów, ale to zapytanie dodaje filtr w kolumnie struktury wyszukiwania, Quantity:

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

Zobacz też

dokumentacja funkcji Data Mining Extensions (DMX)
Functions (DMX)
funkcji przewidywania ogólnego (DMX)