StructureColumn(DMX)

적용 대상: SQL Server Analysis Services

지정한 사례에 해당하는 구조체 열의 값 또는 지정된 대/소문자에서 중첩된 테이블의 테이블 값을 반환합니다.

구문

  
StructureColumn('structure column name')  

인수

structure-column-name.
사례 또는 중첩 테이블 마이닝 구조 열의 이름입니다.

결과 유형

반환되는 형식은 구조체 열 이름> 매개 변수에서 참조되는 열의 형식에 <따라 달라집니다. 예를 들어 참조되는 마이닝 구조 열에 스칼라 값이 포함된 경우 함수는 스칼라 값을 반환합니다.

참조되는 마이닝 구조 열이 중첩 테이블인 경우 함수는 테이블 값을 반환합니다. 반환된 테이블 값은 하위 SELECT 문의 FROM 절에 사용할 수 있습니다.

설명

이 함수는 다형성을 갖고 있으며 SELECT 식 목록, WHERE 조건 식, ORDER BY 식 등의 식을 허용하는 문의 어디에서나 사용할 수 있습니다.

마이닝 구조의 열 이름은 문자열 값이므로 작은따옴표(예 StructureColumn(': 열 1'))로 묶어야 합니다. 동일한 이름의 열이 여러 개 있으면 이름이 바깥쪽 SELECT 문의 컨텍스트에서 확인됩니다.

StructureColumn 함수를 사용하여 쿼리에서 반환되는 결과는 모델에 필터가 있는 경우 영향을 받습니다. 즉, 모델 필터에 의해 마이닝 모델에 포함되어 있는 사례가 제어됩니다. 따라서 구조 열에 대한 쿼리는 마이닝 모델에 사용된 사례만 반환할 수 있습니다. 마이닝 모델 필터가 사례 테이블과 중첩 테이블에 미치는 영향을 보여 주는 코드 예는 이 항목의 예 섹션을 참조하십시오.

DMX SELECT 문에서 이 함수를 사용하는 방법에 대한 자세한 내용은 SELECT FROM <모델을> 참조하세요. CASES(DMX) 또는 SELECT FROM <구조체>입니다. 사례.

오류 메시지

사용자에게 부모 마이닝 구조에 대한 드릴스루 권한이 없는 경우 다음 보안 오류가 발생합니다.

'%{user/}' 사용자에게 '%{model/}' 마이닝 모델의 부모 마이닝 구조로 드릴스루할 권한이 없습니다.

잘못된 구조 열 이름을 지정하면 다음 오류 메시지가 발생합니다.

현재 컨텍스트(줄 %{line/}, 열 %{column/})의 '%{structure/}' 부모 마이닝 구조에서 '%{structure-column-name/}' 마이닝 구조 열을 찾을 수 없습니다.

이러한 예제에는 다음 마이닝 구조를 사용합니다. 마이닝 구조에는 두 개의 중첩 테이블 열 ProductsHobbies. 열의 Hobbies 중첩 테이블에는 중첩 테이블의 키로 사용되는 단일 열이 있습니다. 열의 Products 중첩 테이블은 입력에 사용되는 키 열과 다른 열이 모두 있는 복잡한 중첩 테이블입니다. 다음 예제에서는 모델에서 모든 열을 사용하지 않더라도 여러 열을 포함하도록 데이터 마이닝 구조를 설계하는 방법을 보여 줍니다. 이러한 열 중 일부는 모델 수준에서 패턴을 일반화하는 데 유용하지 않을 수 있지만 드릴스루에 매우 유용할 수 있습니다.

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

다음으로, 다음 예제 코드를 사용하여 방금 만든 구조에 따라 마이닝 모델을 만듭니다.

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: 마이닝 구조에서 열 반환

다음 샘플 쿼리는 마이닝 모델의 일부로 정의된 열 CustomerNameAge열을 반환합니다. 그러나 쿼리는 구조의 일부이지만 마이닝 모델의 일부가 아닌 열을 Age반환합니다.

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

31세 이상의 고객으로 사례를 제한하는 행 필터링은 모델 수준에서 발생하기 때문에 따라서 이 식은 구조 데이터에 포함되지만 모델에서 사용되지 않는 경우를 반환하지 않습니다. 모델을 만드는 데 사용되는 필터 조건(EXISTS (Products))은 제품을 구매한 고객만 케이스를 제한하므로 이 쿼리에서 반환되지 않는 구조의 경우가 있을 수 있습니다.

샘플 쿼리 2: 구조 열에 필터 적용

다음 샘플 쿼리는 모델 열 CustomerNameAge중첩 테이블을 Products반환할 뿐만 아니라 모델의 일부가 아닌 중첩 테이블의 열 Quantity 값도 반환합니다.

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

이 예제에서는 구조 열에 필터를 적용하여 직업이 '설계자'(WHERE StructureColumn('Occupation') = 'Architect')인 고객으로 사례를 제한합니다. 모델을 만들면 모델 필터 조건이 사례에 항상 적용되기 때문에 Products 테이블에 한정하는 행이 적어도 하나 이상 있는 사례만 모델 사례에 포함됩니다. 따라서 중첩 테이블 Products 의 필터와 사례 ('Occupation')에 대한 필터가 모두 적용됩니다.

샘플 쿼리 3: 중첩 테이블에서 열 선택

다음 샘플 쿼리는 모델에서 학습 사례로 사용된 고객의 이름을 반환합니다. 각 고객에 대해 쿼리는 구매 세부 정보가 포함된 중첩된 테이블도 반환합니다. 모델에 열이 ProductName 포함되어 있지만 모델은 열 값을 ProductName 사용하지 않습니다. 모델은 제품이 일반(NOT``OnSale) 가격으로 구매되었는지만 확인합니다. 이 쿼리는 제품 이름을 반환할 뿐만 아니라 모델에 포함되지 않은 구매한 수량을 반환합니다.

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

마이닝 모델에서 드릴스루를 ProductName 사용하도록 설정하지 않으면 열 또는 Quantity 열을 반환할 수 없습니다.

샘플 쿼리 4: 중첩 테이블 열 필터링 및 반환

다음 샘플 쿼리는 마이닝 구조에 포함되지만 모델에 포함되지 않은 사례 및 중첩 테이블 열을 반환합니다. 모델이 제품의 존재 OnSale 에 대해 이미 필터링되었지만 이 쿼리는 마이닝 구조 열 Quantity에 필터를 추가합니다.

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

참고 항목

DMX(데이터 마이닝 확장) 함수 참조
함수(DMX)
일반 예측 함수(DMX)