StructureColumn(DMX)StructureColumn (DMX)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

지정된 사례에 해당하는 구조 열의 값이나 지정된 사례의 중첩 테이블에 대한 테이블 값을 반환합니다.Returns the value of the structure column corresponding to the specified case, or the table value for a nested table in the specified case.

구문Syntax


StructureColumn('structure column name')  

인수Arguments

structure-column-namestructure-column-name.
사례 또는 중첩 테이블 마이닝 구조 열의 이름입니다.The name of a case or nested table mining structure column.

결과 유형Result Type

반환 되는 형식에서 참조 되는 열의 유형에 따라 달라는 <구조 열 이름 > 매개 변수입니다.The type that is returned depends on the type of the column that is referenced in the <structure column name> parameter. 예를 들어 참조되는 마이닝 구조 열에 스칼라 값이 포함되어 있으면 스칼라 값이 반환됩니다.For example, if the mining structure column that is referenced contains a scalar value, the function returns a scalar value.

참조되는 마이닝 구조 열이 중첩 테이블이면 테이블 값이 반환됩니다.If the mining structure column that is referenced is a nested table, the function returns a table value. 반환된 테이블 값은 하위 SELECT 문의 FROM 절에 사용할 수 있습니다.The returned table value can be used in the FROM clause of a sub-SELECT statement.

주의Remarks

이 함수는 다형성을 갖고 있으며 SELECT 식 목록, WHERE 조건 식, 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.

마이닝 구조에 열 이름을 문자열 값 이며 따라서 묶어야 작은따옴표로: 예를 들어 StructureColumn(' 열 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'). 동일한 이름의 열이 여러 개 있으면 이름이 바깥쪽 SELECT 문의 컨텍스트에서 확인됩니다.If there are multiple columns that have the same name, the name is resolved in the context of the enclosing SELECT statement.

사용 하는 쿼리에서 반환 되는 결과 StructureColumn 모델에 필터가 있는지 여부의 영향을 받는 함수입니다.The results that are returned from a query using the StructureColumn function are affected by the presence of any filters on the model. 즉, 모델 필터에 의해 마이닝 모델에 포함되어 있는 사례가 제어됩니다.That is to say, the model filter controls the cases that are included in the mining model. 따라서 구조 열에 대한 쿼리는 마이닝 모델에 사용된 사례만 반환할 수 있습니다.Therefore, a query on the structure column can return only those cases that were used in the mining model. 마이닝 모델 필터가 사례 테이블과 중첩 테이블에 미치는 영향을 보여 주는 코드 예는 이 항목의 예 섹션을 참조하십시오.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.

DMX SELECT 문에서이 함수를 사용 하는 방법에 대 한 자세한 내용은 참조 하세요. SELECT FROM < 모델 >. 경우 ( DMX ) 또는 SELECT FROM < 구조 >. 경우합니다.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.

오류 메시지Error Messages

사용자에게 부모 마이닝 구조에 대한 드릴스루 권한이 없는 경우 다음과 같은 보안 오류 메시지가 나타납니다.The following security error is raised if the user does not have drillthrough permission on the parent mining structure:

'%{user/}' 사용자에게 '%{model/}' 마이닝 모델의 부모 마이닝 구조로 드릴스루할 권한이 없습니다.The '%{user/}' user does not have permission to drill through to the parent mining structure of the ‘%{model/}’ mining model.

잘못된 구조 열 이름을 지정하면 다음과 같은 오류 메시지가 나타납니다.The following error message is raised if an invalid structure column name is specified:

현재 컨텍스트(줄 %{line/}, 열 %{column/})의 '%{structure/}' 부모 마이닝 구조에서 '%{structure-column-name/}' 마이닝 구조 열을 찾을 수 없습니다.The ‘%{structure-column-name/}’ mining structure column was not found in the ‘%{structure/}’ parent mining structure in the current context (line %{line/}, column %{column/}).

Examples

여기에 나오는 예에서는 다음 마이닝 구조를 사용합니다.We will use the following mining structure for these examples. 이 마이닝 구조에는 두 개의 중첩 테이블 열, ProductsHobbies가 있습니다.Note that the mining structure contains two nested table columns, Products and Hobbies. Hobbies 열의 중첩 테이블에는 중첩 테이블의 키로 사용되는 단일 열이 있습니다.The nested table in the Hobbies column has a single column that is used as the key for the nested table. Products 열의 중첩 테이블은 키 열과 입력에 사용되는 다른 열이 둘 다 있는 복잡한 중첩 테이블입니다.The nested table in the Products column is a complex nested table that has both a key column and other columns used for input. 다음 예에서는 모델에서 모든 열을 사용할 수는 없더라도 다양한 열을 포함하도록 데이터 마이닝 구조를 디자인하는 방법을 보여 줍니다.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. 이러한 열 중 일부는 패턴을 일반화하는 모델 수준에서는 유용하지 않을 수 있지만 드릴스루 시 매우 유용할 수 있습니다.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  
 ))  

그런 후 다음 예제 코드를 사용하여 방금 만든 구조를 기반으로 마이닝 모델을 만듭니다.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))  

마이닝 구조에서 한 열을 반환 하는 예제 쿼리 1:Sample Query 1: Returning a Column from the Mining Structure

다음 예제 쿼리에서는 마이닝 모델의 일부로 정의되는 CustomerNameAge 열을 반환합니다.The following sample query returns the columns CustomerName and Age, which are defined as being part of the mining model. 그러나 이 쿼리에서는 구조에만 포함되어 있고 마이닝 모델에는 포함되어 있지 않은 Age 열도 반환합니다.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  

31세 이상의 고객으로 사례를 제한하는 행 필터링은 모델 수준에서 발생하기 때문에Note that the filtering of rows to restrict cases to customers over the age of 30 takes place at the level of the model. 이 식은 구조 데이터에는 포함되지만 마이닝 모델에서는 사용되지 않는 사례를 반환하지 않을 수 있습니다.Therefore, this expression would not return cases that are included in the structure data but are not used by the model. 모델을 만드는 데 사용된 필터 조건(EXISTS (Products))이 제품을 구매한 고객으로 사례를 제한하기 때문에 구조에는 이 쿼리에서 반환하지 않는 사례가 있을 수 있습니다.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.

구조 열에 필터를 적용 하는 예제 쿼리 2:Sample Query 2: Applying a Filter to the Structure Column

다음 예제 쿼리에서는 CustomerNameAge 열과 Products중첩 테이블을 반환할 뿐만 아니라 모델에 포함되어 있지 않은 중첩 테이블의 Quantity 열 값도 반환합니다.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’  

이 예제에서는, 직업이 '건축가' 인 고객에 사례를 제한 하는 구조 열에 필터가 적용 됩니다 (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’). 모델을 만들면 모델 필터 조건이 사례에 항상 적용되기 때문에 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. 따라서 Products 중첩 테이블의 필터와 (‘Occupation’) 사례의 필터가 둘 다 적용됩니다.Therefore, both the filter on the nested table Products and the filter on the case (‘Occupation’)are applied.

중첩된 테이블에서 열을 선택 하는 예제 쿼리 3:Sample Query 3: Selecting Columns from a Nested Table

다음 예제 쿼리에서는 모델의 학습 사례로 사용된 고객의 이름을 반환할 뿐만 아니라The following sample query returns the names of customers who were used as training cases from the model. 각 고객의 구매 정보가 포함된 중첩 테이블도 반환합니다.For each customer, the query also returns a nested table that contains the purchase details. 모델에 포함 되어 있지만 ProductName 열을 모델의 값을 사용 하지 않습니다는 ProductName 열입니다.Although the model includes the ProductName column, the model does not use the value of the ProductName column. 모델 폴링은 정기적인 제품을 구입한 경우만 확인 (NOT``OnSale) 가격입니다.The model only checks if the product was purchased at regular (NOT``OnSale) price. 이 쿼리에서는 제품 이름을 반환할 뿐만 아니라 모델에 포함되어 있지 않은 구매 수량도 반환합니다.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  

마이닝 모델에 드릴스루가 사용되도록 설정되지 않은 경우 ProductName 또는 Quantity 열을 반환할 수 없습니다.Note that you cannot return either the ProductName column or the Quantity column unless drillthrough is enabled on the mining model.

예제 쿼리 4: 필터링 및 중첩된 테이블 열을 반환Sample Query 4: Filtering on and Returning Nested Table Columns

다음 예제 쿼리에서는 마이닝 구조에만 포함되어 있고 마이닝 모델에는 포함되어 있지 않은 사례와 중첩 테이블 열을 반환합니다.Thee following sample query returns the case and nested table columns that are included in the mining structure but not in the model. 모델에서 OnSale 제품이 있는지 여부를 기준으로 필터링이 이미 수행되었지만 이 쿼리는 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)  

참고 항목See Also

Data Mining Extensions ( DMX ) 함수 참조 Data Mining Extensions (DMX) Function Reference
함수 ( DMX ) Functions (DMX)
일반 예측 함수 ( DMX )General Prediction Functions (DMX)