큐브처리중에도 처리완료 이전 시점까지의 분석디비에 접근이 가능하도록
두개의 디비로 운영한다.
ASDB1 >> 큐브처리용
ASDB2 >> 서비스용
배치작업에서는 ASDB1을 처리하고 처리가 완료되면 ASDB1을 백업하고
백업한 ASDB1파일을 ASDB2로 복원하는 JOB을 생성하여 배치수행을 한다.
복원중에 ASDB에 접근할 수 없긴하지만 큐브처리시간동안 접근할 수 없는 시간보다는 짧다.
이 블로그 검색
2011년 4월 8일 금요일
큐브처리시 오류구성
BIDS에서 큐브처리 시 오류구성이 저장되지 않아 매번 오류구성에서 오류무시 옵션을 체크하고 큐브처리를 했었는데 SSMS상에서 오류구성옵션을 바꾸면 해당 설정대로 다음번에도 처리가 가능하다.
큐브상의 Rowcount가 실제테이블과 일치하지 않을 때
큐브 처리 후 팩트 테이블의 실제 건 수 만큼의 데이터를 보여주지 않을 때
체크해봐야 할 사항.
1. 파티션에서 필터링을 하는지 체크
쿼리로 처리를 하는지. 테이블로 처리를 하는지.
2 . 큐브처리 시 캐쉬를 삭제한 후 다시 처리를 해 본다.
아래와 같은 쿼리로 캐쉬 삭제가 가능
<ClearCache xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>ASDB_NAME</DatabaseID>
</Object>
</ClearCache>
3. 차원 생성시 기본적으로 UNKNOWN MEMBER를 사용하도록 설정이 되지만
간혹 설정이 되지 않고 생성되는 경우가 있다.
UNKNOWN MEMBER의 사용이 VISIBLE 이 보통이나. NONE으로 바껴 있다면
차원키 에러가 났을 경우 해당 데이터를 제외하고 보여주기 때문에 실제 데이터보다 적은 데이터가 보여질 수 있다.
40여개의 차원중 두 개가 NONE으로 설정되어 있었다.
(이 경우때문에 며칠을 헤매었다. SSAS의 버그인가 싶다.)
이렇게 바꿔 줌
큐브처리 옵션
처리 옵션
다음 표에서는 Analysis Services에서 사용 가능한 처리 방법을 설명하고 각 방법이 지원하는 개체를 식별합니다.
기본값 처리
개체의 처리 상태를 검색하고 필요한 처리를 수행하여 처리되지 않거나 부분적으로 처리된 개체를 완전히 처리된 상태로 전달합니다. 이 처리 옵션은 큐브, 데이터베이스, 차원, 측정값 그룹, 마이닝 모델, 마이닝 구조 및 파티션에 대해 지원됩니다.
전체 처리
Analysis Services 개체와 이 개체에 포함된 모든 개체를 처리합니다. 이미 처리된 개체에 대해 전체 처리를 실행하면 Analysis Services에서는 개체의 모든 데이터를 삭제한 다음 개체를 처리합니다. 이 처리 유형은 특성 계층이 추가, 삭제 또는 이름이 바뀐 경우와 같이 개체 구조가 변경된 경우에 필요합니다. 이 처리 옵션은 큐브, 데이터베이스, 차원, 측정값 그룹, 마이닝 모델, 마이닝 구조 및 파티션에 대해 지원됩니다.
증분 처리
사용 가능한 팩트 데이터를 새로 추가하고 관련 파티션만 처리합니다. 이 처리 옵션은 측정값 그룹 및 파티션에 대해 지원됩니다.
업데이트 처리
데이터 다시 읽기 및 차원 특성 업데이트를 강제로 수행합니다. 관련 파티션의 융통성 있는 집계와 인덱스가 삭제됩니다. 예를 들어 이 처리 옵션은 차원에 새 멤버를 추가하고 전체 데이터 다시 읽기를 강제로 수행하여 개체 특성을 업데이트할 수 있습니다. 이 처리 옵션은 차원에 대해 지원됩니다.
인덱스 처리
처리된 모든 파티션에 대한 인덱스 및 집계를 만들거나 다시 빌드합니다. 이 옵션은 처리되지 않은 개체에 대해 오류를 발생시킵니다. 이 처리 옵션은 큐브, 차원, 측정값 그룹 및 파티션에 대해 지원됩니다.
데이터 처리
집계나 인덱스를 작성하지 않고 데이터만 처리합니다. 파티션에 데이터가 있는 경우 이 데이터를 삭제한 후 해당 파티션에 원본 데이터를 다시 채웁니다. 이 처리 옵션은 차원, 큐브,측정값 그룹 및 파티션에 대해 지원됩니다.
처리 안 함
지정한 개체 및 모든 하위 요소 개체의 데이터를 삭제합니다. 삭제한 데이터는 다시 로드되지 않습니다. 이 처리 옵션은 큐브, 데이터베이스, 차원, 측정값 그룹, 마이닝 모델, 마이닝 구조 및 파티션에 대해 지원됩니다.
구조 처리
큐브가 처리되지 않은 경우 Analysis Services에서는 필요에 따라 큐브의 모든 차원을 처리한 다음 큐브 정의만 만듭니다. 마이닝 구조에 이 옵션을 적용하면 원본 데이터로 마이닝 구조를 채웁니다. 이 옵션이 전체 처리 옵션과 다른 점은 마이닝 모델 자체까지 처리를 반복하지는 않는다는 것입니다. 이 처리 옵션은 큐브 및 마이닝 구조에 대해 지원됩니다.
구조 지우기 처리
마이닝 구조에서 모든 학습 데이터를 제거합니다. 이 처리 옵션은 마이닝 구조에 대해서만 지원됩니다.
스크립트 캐시 처리
이 기능은 다음 버전의 Microsoft SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 가능한 한 빨리 수정하십시오
2011년 4월 7일 목요일
Dimension Members Count
차원 멤버의 수
매출 테이블에서 상품개수를 구할 경우 상품코드를 Distinct Count를 사용하여 구할 수도 있지만
상품차원이 있다면 이는 곧 상품차원멤버수와 동일함.
Calculated Measure로 아래와 같은 계산식을 사용하여 구할 수 있다.
IIF(Count(CrossJoin({[Measures].[측정값]},[차원].[계층].Members), ExcludeEmpty) =0
,null
,Count(CrossJoin({[Measures].[측정값]},[차원].[계층].Members), ExcludeEmpty)-1 )
큐브처리 중 쿼리 제한 시간 에러 (Query timeout expired HY008)
증상)
큐브처리 중
'OLE DB error: OLE DB or ODBC error: Query timeout expired HY008'
라는 메세지를 띄우며 큐브처리 중 에러가 나는 경우가 있다.
큐브처리시 해당 파티션의 크기가 큰 경우 기본설정(60분)시간 내에
파티션 처리가 완료되지 않아 쿼리제한시간 만료 에러를 띄운다.
해결)
1. 파티션을 좀더 작은 단위로 나눈다.
2. 쿼리제한시간을 늘려준다.
( SQL Server Enterprise 버전의 경우 파티션 개수에 제한이 없으나 Standard 버전에서는 3개의 파티션까지 생성이 가능하므로 3개의 파티션으로도 해결이 되지 않을 경우 사용한다.)
- SSMS에서 ASDB Property의 ExternalCommandTimeout 옵션을 조정
(고급 속성 모두 표시 체크박스에 체크를 해야 옵션이 나타난다.)
BIDS에서 큐브처리를 할 경우엔 해당 프로젝트에서 솔루션 탐색기의 가장 상위의
DB를 선택 후 도구>옵션에서 제한 시간을 조정한다.
SSAS Time Duration to measure
시간을 측정값으로 사용하기
1. 대상컬럼 변환
1. 대상컬럼 변환
시간컬럼을 측정값을 numeric형태로 변환 .
ETL_LOG라는 테이블의 작업시간 컬럼의 데이터타입은 TIME(7).
이것을 초단위로 바꾸고 하루(86,400초)로 나눔.
예)
SELECT
WTIME AS [작업시간(HH:MM:SS.MS)]
, (LEFT(CONVERT(VARCHAR,WTIME),2)*3600
+ SUBSTRING(CONVERT(VARCHAR,WTIME),4,2)*60
+ SUBSTRING(CONVERT(VARCHAR,WTIME),7,2) ) / 86400.0000 AS [작업시간(초)/1DAY(초)]
FROM ETL_LOG
ORDER BY 1 DESC
---- Result
2. 계산된 측정값 추가
큐브 생성 시 위에서 추가한 시간측정값컬럼을 측정값에 포함시키고 계산된 측정값 탭에서
스크립트를 추가 (스크립트 뷰모드에서 추가)
---- Script 추가
/*
The CALCULATE command controls the aggregation of leaf cells in the cube.
If the CALCULATE command is deleted or modified, the data within the cube is affected.
You should edit this command only if you manually specify how the cube is aggregated.
*/
CALCULATE;
CREATE MEMBER CURRENTCUBE.[Measures].[소요시간]
AS [Measures].[WDURATION],
FORMAT_STRING = IIF(
[Measures].[WDURATION] < 1
,'"0 day" hh:mm:ss'
,'"' + cstr(int([Measures].[WDURATION])) + ' day" hh:mm:ss'),
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = '로그측정값' ;
노란색으로 표시된 부분만 변경.
소요시간 > 새로만들 계산된 측정값 명
WDURIATION > 작업시간 측정값 명
로그측정값 > 측정값그룹 명
3. 확인
SSMS 상에서 확인.
---- SSMS에서 확인
피드 구독하기:
글 (Atom)