개체 처리(XMLA)

Microsoft SQL Server SQL Server Analysis Services 처리는 비즈니스 분석을 위한 정보로 데이터를 전환하는 단계 또는 일련의 단계입니다. 처리 방법은 개체 유형에 따라 달라지지만 처리는 항상 데이터를 정보로 변환하는 과정의 일부입니다.

SQL Server Analysis Services 개체를 처리하려면 Process 명령을 사용할 수 있습니다. 프로세스 명령은 SQL Server Analysis Services 인스턴스에서 다음 개체를 처리할 수 있습니다.

  • 큐브

  • 데이터베이스

  • 차원

  • 측정값 그룹

  • 마이닝 모델

  • 마이닝 구조

  • 파티션

개체 처리를 제어하기 위해 프로세스 명령에는 설정할 수 있는 다양한 속성이 있습니다. 프로세스 명령에는 처리의 양, 처리할 개체, 아웃오버 라인 바인딩을 사용할지 여부, 오류를 처리하는 방법 및 쓰기 저장 테이블을 관리하는 방법을 제어하는 속성이 있습니다.

처리 옵션 지정

Process 명령의 Type 속성은 개체를 처리할 때 사용할 처리 옵션을 지정합니다. 처리 옵션에 대한 자세한 내용은 처리 옵션 및 설정(Analysis Services)을 참조하세요.

다음 표에서는 Type 속성의 상수와 각 상수로 처리할 수 있는 다양한 개체를 나열합니다.

형식 적용 가능한 개체
ProcessFull 큐브, 데이터베이스, 차원, 측정값 그룹, 마이닝 모델, 마이닝 구조, 파티션
ProcessAdd 차원, 파티션
ProcessUpdate 차원
ProcessIndexes 차원, 큐브, 측정값 그룹, 파티션
ProcessData 차원, 큐브, 측정값 그룹, 파티션
ProcessDefault 큐브, 데이터베이스, 차원, 측정값 그룹, 마이닝 모델, 마이닝 구조, 파티션
ProcessClear 큐브, 데이터베이스, 차원, 측정값 그룹, 마이닝 모델, 마이닝 구조, 파티션
ProcessStructure 큐브, 마이닝 구조
ProcessClearStructureOnly 마이닝 구조
ProcessScriptCache 큐브

SQL Server Analysis Services 개체 처리에 대한 자세한 내용은 다차원 모델 처리(Analysis Services)를 참조하세요.

처리할 개체 지정

Process 명령의 Object 속성에는 처리할 개체의 개체 식별자가 포함됩니다. Process 명령에서 하나의 개체만 지정할 수 있지만 개체를 처리하면 자식 개체도 처리됩니다. 예를 들어 큐브의 측정값 그룹을 처리하면 해당 측정 그룹의 모든 파티션이 처리되고, 데이터베이스를 처리하면 데이터베이스에 포함된 큐브, 차원 및 마이닝 구조 등의 모든 개체가 처리됩니다.

Process 명령의 ProcessAffectedObjects 특성을 true로 설정하면 지정된 개체를 처리하는 데 영향을 받는 모든 관련 개체도 처리됩니다. 예를 들어 프로세스 명령에서 ProcessUpdate 처리 옵션을 사용하여 차원이 증분 업데이트되는 경우 ProcessAffectedObjects가 true로 설정된 경우 멤버가 추가되거나 삭제되어 집계가 무효화되는 파티션도 SQL Server Analysis Services 처리됩니다. 이 경우 단일 프로세스 명령은 SQL Server Analysis Services 인스턴스에서 여러 개체를 처리할 수 있지만 SQL Server Analysis Services 프로세스 명령에 지정된 단일 개체 외에 처리해야 하는 개체도 결정합니다.

그러나 Batch 명령 내에서 여러 Process 명령을 사용하여 차원과 같은 여러 개체를 동시에 처리할 수 있습니다. 일괄 처리 작업은 ProcessAffectedObjects 특성을 사용하는 것보다 SQL Server Analysis Services 인스턴스에서 개체의 직렬 또는 병렬 처리를 위한 보다 세부적인 제어 수준을 제공하며, 더 큰 SQL Server Analysis Services 데이터베이스에 대한 처리 방법을 조정할 수 있습니다. 일괄 처리 작업을 수행하는 방법에 대한 자세한 내용은 XMLA(Batch 작업) 수행을 참조하세요.

아웃오브 라인 바인딩 지정

Process 명령이 Batch 명령에 포함되지 않은 경우 처리할 개체에 대한 Process 명령의 Bindings, DataSourceDataSourceView 속성에서 선택적으로 아웃 오브 라인 바인딩을 지정할 수 있습니다. 아웃 오브 라인 바인딩은 프로세스 명령을 실행하는 동안에만 바인딩이 존재하고 처리 중인 개체와 연결된 기존 바인딩을 재정의하는 데이터 원본, 데이터 원본 뷰 및 기타 개체에 대한 참조입니다. 아웃오브 라인 바인딩을 지정하지 않으면 처리할 개체에 현재 연결되어 있는 바인딩이 사용됩니다.

아웃오브 라인 바인딩은 다음과 같은 경우에 사용됩니다.

  • 행이 두 번 계산되지 않도록 기존 팩트 테이블에 대한 필터나 대체 팩트 테이블을 지정해야 하는 파티션을 증분 처리하는 경우

  • Microsoft SQL Server Integration Services에서 데이터 흐름 태스크를 사용하여 차원, 마이닝 모델 또는 파티션을 처리하는 동안 데이터를 제공합니다.

아웃오브 라인 바인딩은 ASSL(Analysis Services Scripting Language)의 일부로 설명됩니다. ASSL의 아웃 오브 라인 바인딩에 대한 자세한 내용은 데이터 원본 및 바인딩(SSAS 다차원)을 참조하세요.

파티션 증분 업데이트

파티션에 대해 지정된 바인딩은 파티션 내에서 이미 집계된 팩트 테이블 데이터를 참조하기 때문에 이미 처리된 파티션을 증분 업데이트하려면 아웃오브 라인 바인딩이 필요합니다. 프로세스 명령을 사용하여 이미 처리된 파티션을 증분 방식으로 업데이트하는 경우 SQL Server Analysis Services 다음 작업을 수행합니다.

  • 증분 업데이트할 파티션과 동일한 구조의 임시 파티션을 만듭니다.

  • 프로세스 명령에 지정된 아웃 오브 라인 바인딩을 사용하여 임시 파티션을 처리 합니다.

  • 임시 파티션을 선택된 기존 파티션과 병합합니다.

XMLA(XML for Analysis)를 사용하여 파티션을 병합하는 방법에 대한 자세한 내용은 XMLA(파티션 병합)를 참조하세요.

처리 오류 해결

Process 명령의 ErrorConfiguration 속성을 사용하면 개체를 처리하는 동안 발생한 오류를 처리하는 방법을 지정할 수 있습니다. 예를 들어 차원을 처리하는 동안 SQL Server Analysis Services 키 특성의 키 열에 중복 값이 발생합니다. 특성 키는 고유해야 하므로 SQL Server Analysis Services 중복 레코드를 삭제합니다. ErrorConfigurationKeyDuplicate 속성에 따라 SQL Server Analysis Services 다음을 수행할 수 있습니다.

  • 오류를 무시하고 차원을 계속 처리합니다.

  • 중복 키가 SQL Server Analysis Services 상태인 메시지를 반환하고 처리를 계속합니다.

Process 명령 중에 ErrorConfiguration에서 옵션을 제공하는 유사한 조건이 많이 있습니다.

쓰기 저장(writeback) 테이블 관리

Process 명령에서 쓰기가 가능한 파티션 또는 이러한 파티션에 대한 큐브 또는 측정값 그룹이 있는 경우 아직 완전히 처리되지 않은 경우 해당 파티션에 대한 쓰기 저장 테이블이 아직 없을 수 있습니다. Process 명령의 WritebackTableCreation 속성은 SQL Server Analysis Services 쓰기 저장 테이블을 만들어야 하는지 여부를 결정합니다.

Description

다음 예제에서는 Adventure Works DW 다차원 2012 샘플 SQL Server Analysis Services 데이터베이스를 완전히 처리합니다.

코드

<Process xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">  
  <Object>  
    <DatabaseID>Adventure Works DW Multidimensional 2012</DatabaseID>  
  </Object>  
  <Type>ProcessFull</Type>  
  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>  
</Process>  

Description

다음 예제에서는 Adventure Works DW 다차원 2012 샘플 SQL Server Analysis Services 데이터베이스에 있는 Adventure Works DW 큐브의 Internet Sales 측정값 그룹에서 Internet_Sales_2004 파티션을 증분 방식으로 처리합니다. Process 명령은 Process 명령의 Bindings 속성에서 아웃오브 라인 쿼리 바인딩을 사용하여 파티션에 추가할 집계를 생성할 팩트 테이블 행을 검색하여 2006년 12월 31일 이후의 주문 날짜에 대한 집계를 파티션에 추가합니다.

코드

<Process ProcessAffectedObjects="true" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">  
  <Object>  
    <DatabaseID>Adventure Works DW Multidimensional 2012</DatabaseID>  
    <CubeID>Adventure Works DW</CubeID>  
    <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>  
    <PartitionID>Internet_Sales_2006</PartitionID>  
  </Object>  
  <Bindings>  
    <Binding>  
      <DatabaseID>Adventure Works DW Multidimensional 2012</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>