개체 처리(XMLA)
Microsoft SQL Server Analysis Services에서 처리는 데이터를 처리는 데이터를 비즈니스 분석용 정보로 변환하는 일련의 단계를 의미합니다. 처리 방법은 개체 유형에 따라 달라지지만 처리는 항상 데이터를 정보로 변환하는 과정의 일부입니다.
Analysis Services 개체를 처리하기 위해 Process 명령을 사용할 수 있습니다. Process 명령이 Analysis Services 인스턴스에서 처리할 수 있는 개체는 다음과 같습니다.
큐브
데이터베이스
차원
측정값 그룹
마이닝 모델
마이닝 구조
파티션
Process 명령에는 개체 처리를 제어하기 위해 설정할 수 있는 다양한 속성이 있습니다. 제어할 수 있는 Process 명령의 속성으로는 처리량, 처리할 개체, 아웃오브 라인 바인딩 사용 여부, 오류 해결 방법 및 쓰기 저장(writeback) 테이블 관리 방법이 있습니다.
처리 옵션 지정
Process 명령의 Type 속성은 개체를 처리할 때 사용할 처리 옵션을 지정합니다. 처리 옵션에 대한 자세한 내용은 처리 옵션 및 설정를 참조하십시오.
다음 표에서는 Type 속성에 대한 상수와 각 상수를 사용하여 처리할 수 있는 다양한 개체를 보여 줍니다.
Type 값 |
적용 가능한 개체 |
---|---|
ProcessFull |
큐브, 데이터베이스, 차원, 측정값 그룹, 마이닝 모델, 마이닝 구조, 파티션 |
ProcessAdd |
차원, 파티션 |
ProcessUpdate |
차원 |
ProcessIndexes |
차원, 큐브, 측정값 그룹, 파티션 |
ProcessData |
차원, 큐브, 측정값 그룹, 파티션 |
ProcessDefault |
큐브, 데이터베이스, 차원, 측정값 그룹, 마이닝 모델, 마이닝 구조, 파티션 |
ProcessClear |
큐브, 데이터베이스, 차원, 측정값 그룹, 마이닝 모델, 마이닝 구조, 파티션 |
ProcessStructure |
큐브, 마이닝 구조 |
ProcessClearStructureOnly |
마이닝 구조 |
ProcessScriptCache |
큐브 |
Analysis Services 개체를 처리하는 방법은 Analysis Services 개체 처리를 참조하십시오.
처리할 개체 지정
Process 명령의 Object 속성은 처리할 개체의 개체 식별자를 포함합니다. Process 명령에는 한 개체만 지정할 수 있지만 개체를 처리할 때 모든 자식 개체도 처리됩니다. 예를 들어 큐브의 측정값 그룹을 처리하면 해당 측정 그룹의 모든 파티션이 처리되고, 데이터베이스를 처리하면 데이터베이스에 포함된 큐브, 차원 및 마이닝 구조 등의 모든 개체가 처리됩니다.
Process 명령의 ProcessAffectedObjects 특성을 true로 설정하면 지정된 개체 처리 작업의 영향을 받는 관련 개체도 모두 처리됩니다. 예를 들어 ProcessAffectedObjects를 true로 설정하면 Process 명령의 ProcessUpdate 처리 옵션을 사용하여 차원이 증분 업데이트되는 경우 추가 또는 삭제되는 멤버로 인해 집계가 무효화된 파티션도 Analysis Services에 의해 처리됩니다. 이 경우 단일 Process 명령이 Analysis Services 인스턴스의 여러 개체를 처리할 수 있지만 Process 명령에 지정된 단일 개체 이외에 추가로 처리되어야 하는 개체는 Analysis Services에서 결정합니다.
하지만 Batch 명령 내에서 Process 명령을 여러 개 사용하면 차원과 같은 여러 개체를 동시에 처리할 수 있습니다. 일괄 처리 작업을 수행하면 ProcessAffectedObjects 특성을 사용할 때보다 Analysis Services 인스턴스에서 수행되는 개체의 순차 및 병렬 처리를 보다 세부적으로 제어할 수 있으며 대규모 Analysis Services 데이터베이스의 처리 방법을 조정할 수 있습니다. 일괄 처리 작업을 수행하는 방법은 일괄 작업 수행(XMLA)을 참조하십시오.
아웃오브 라인 바인딩 지정
Process 명령이 Batch 명령에 포함되어 있지 않은 경우 처리할 개체에 대한 Process 명령의 Bindings, DataSource 및 DataSourceView 속성에 아웃오브 라인 바인딩을 선택적으로 지정할 수 있습니다. 아웃오브 라인 바인딩은 Process 명령이 실행되는 동안에만 바인딩이 존재하는 데이터 원본, 데이터 원본 뷰 및 기타 개체에 대한 참조로, 처리되는 개체에 연결된 기존 바인딩을 모두 재정의합니다. 아웃오브 라인 바인딩을 지정하지 않으면 처리할 개체에 현재 연결되어 있는 바인딩이 사용됩니다.
아웃오브 라인 바인딩은 다음과 같은 경우에 사용됩니다.
행이 두 번 계산되지 않도록 기존 팩트 테이블에 대한 필터나 대체 팩트 테이블을 지정해야 하는 파티션을 증분 처리하는 경우
차원, 마이닝 모델 또는 파티션을 처리하는 동안 데이터를 제공하기 위해 Microsoft SQL Server Integration Services에서 데이터 흐름 태스크를 사용하는 경우
아웃오브 라인 바인딩은 ASSL(Analysis Services Scripting Language)의 일부로 설명됩니다. ASSL에서 사용되는 아웃오브 라인 바인딩에 대한 자세한 내용은 데이터 원본 및 바인딩(Analysis Services - 다차원 데이터)을 참조하십시오.
파티션 증분 업데이트
파티션에 대해 지정된 바인딩은 파티션 내에서 이미 집계된 팩트 테이블 데이터를 참조하기 때문에 이미 처리된 파티션을 증분 업데이트하려면 아웃오브 라인 바인딩이 필요합니다. Process 명령을 사용하여 이미 처리된 파티션을 증분 업데이트하는 경우 Analysis Services에서는 다음과 같은 동작을 수행합니다.
증분 업데이트할 파티션과 동일한 구조의 임시 파티션을 만듭니다.
Process 명령에 지정된 아웃오브 라인 바인딩을 사용하여 임시 파티션을 처리합니다.
임시 파티션을 선택된 기존 파티션과 병합합니다.
XMLA(XML for Analysis)를 사용하여 파티션을 병합하는 방법은 파티션 병합(XMLA)을 참조하십시오.
처리 오류 해결
Process 명령의 ErrorConfiguration 속성을 사용하면 개체 처리 중에 발생한 오류를 해결하는 방법을 지정할 수 있습니다. 예를 들어 Analysis Services에서 차원을 처리하는 동안 키 특성의 키 열에 중복 값이 있는 경우 특성 키는 고유해야 하므로 Analysis Services에서는 중복 레코드를 삭제합니다. ErrorConfiguration의 KeyDuplicate 속성에 따라 Analysis Services에서는 다음과 같은 작업을 수행할 수 있습니다.
오류를 무시하고 차원을 계속 처리합니다.
Analysis Services에서 중복 키가 있음을 알리는 메시지를 반환하고 처리를 계속합니다.
Process 명령을 실행하는 동안 ErrorConfiguration에서 옵션을 제공하는 유사한 경우가 많이 있습니다.
쓰기 저장(writeback) 테이블 관리
Process 명령을 실행하는 동안 아직 완전히 처리되지 않은 쓰기 가능한 파티션이나 그러한 파티션에 대한 큐브 또는 측정값 그룹이 발생한다면 해당 파티션에 대한 쓰기 저장(writeback) 테이블이 아직 존재하지 않는 것일 수 있습니다. Process 명령의 WritebackTableCreation 속성에 따라 Analysis Services에서 쓰기 저장(writeback) 테이블을 생성할지 여부가 결정됩니다.
예
설명
다음 예제에서는 Adventure Works DW 예제 Analysis Services 데이터베이스를 완전히 처리합니다.
코드
<Process xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>Adventure Works DW</DatabaseID>
</Object>
<Type>ProcessFull</Type>
<WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>
설명
다음 예제에서는 Adventure Works DW 예제 Analysis Services 데이터베이스에 있는 Adventure Works DW 큐브의 Internet Sales 측정값 그룹에서 Internet_Sales_2004 파티션을 증분 처리합니다. Process 명령은 Process 명령의 Bindings 속성에 있는 아웃오브 라인 쿼리 바인딩을 사용하여 파티션에 추가하려는 집계를 생성할 팩트 테이블 행을 검색하는 방법으로 2006년 12월 31일 이후의 주문 날짜에 대한 집계를 파티션에 추가하고 있습니다.
코드
<Process ProcessAffectedObjects="true" xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>Adventure Works DW</DatabaseID>
<CubeID>Adventure Works DW</CubeID>
<MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
<PartitionID>Internet_Sales_2006</PartitionID>
</Object>
<Bindings>
<Binding>
<DatabaseID>Adventure Works DW</DatabaseID>
<CubeID>Adventure Works DW</CubeID>
<MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
<PartitionID>Internet_Sales_2006</PartitionID>
<Source xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="QueryBinding">
<DataSourceID>Adventure Works DW</DataSourceID>
<QueryDefinition>
SELECT
[dbo].[FactInternetSales].[ProductKey],
[dbo].[FactInternetSales].[OrderDateKey],
[dbo].[FactInternetSales].[DueDateKey],
[dbo].[FactInternetSales].[ShipDateKey],
[dbo].[FactInternetSales].[CustomerKey],
[dbo].[FactInternetSales].[PromotionKey],
[dbo].[FactInternetSales].[CurrencyKey],
[dbo].[FactInternetSales].[SalesTerritoryKey],
[dbo].[FactInternetSales].[SalesOrderNumber],
[dbo].[FactInternetSales].[SalesOrderLineNumber],
[dbo].[FactInternetSales].[RevisionNumber],
[dbo].[FactInternetSales].[OrderQuantity],
[dbo].[FactInternetSales].[UnitPrice],
[dbo].[FactInternetSales].[ExtendedAmount],
[dbo].[FactInternetSales].[UnitPriceDiscountPct],
[dbo].[FactInternetSales].[DiscountAmount],
[dbo].[FactInternetSales].[ProductStandardCost],
[dbo].[FactInternetSales].[TotalProductCost],
[dbo].[FactInternetSales].[SalesAmount],
[dbo].[FactInternetSales].[TaxAmt],
[dbo].[FactInternetSales].[Freight],
[dbo].[FactInternetSales].[CarrierTrackingNumber],
[dbo].[FactInternetSales].[CustomerPONumber]
FROM [dbo].[FactInternetSales]
WHERE OrderDateKey > '1280'
</QueryDefinition>
</Source>
</Binding>
</Bindings>
<Type>ProcessAdd</Type>
<WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>