2014-10-16 3 views
2

에서 약점이있는 간단한 테이블 형식의 모델이 있습니다. 20mio. 레코드 (판매 트랜잭션) 및 약 600.000 개의 레코드 (고객)가있는 차원 테이블이 있습니다.Excel에서 상위 N을 효율적으로 표시하는 방법 SSAS 테이블 형식 모델

일반적인보고 시나리오는 팩트 테이블에서 상위 10 위 고객을 얻는 것입니다. 다른 기준 (일반적으로 기간, 제품 등)에 의해 필터링 될 수 있습니다.

Excel의 경우 20mio의 모든 데이터를 집계합니다. 총 판매 금액을 반환하는 기록은 즉시입니다. 그러나 일단 고객별로 그룹화를 시도하면 모든 데이터를 검색하는 데 약간의 시간 (15-20 초)이 소요됩니다. 이는 상당히 많은 고객 (600.000)이 표시되어야하므로 의미가 있습니다.

이제 Excel에서 값 필터를 적용하여 상위 10 위 고객 만 얻으면 결과를 반환하는 데 약 15-20 초가 걸리지 만 내 사용자에게는 받아 들일 수 없습니다 (즉각적으로보고 싶어하는 사용자). 제품, 시간 등의 다른 속성을 슬라이싱하는 동안 상위 10 위 고객).

내부적으로 Excel은 값 필터를 사용하여 테이블 형식의 모델을 쿼리 할 때 TOPCOUNT MDX 함수를 사용합니다.

이러한 종류의 쿼리 속도를 높이려면 표 형식 모델에서 수행 할 수있는 작업이 있습니까?

이 나는 ​​시도했다 :

  • 는 차원 테이블에 계산 된 열을 만들기 각 고객의 총 판매 금액을 포함. 성능이 더 좋지만,이 열의 값은 사실의 다른 속성으로 분리 할 수 ​​없기 때문에 이동하는 방법이 아니며, 열에 분명히 많은 별개의 값 (테이블 형식의 나쁜 값)이 포함되어 끝납니다.
  • DAX RANKX 함수를 제안 된대로 사용하여 팩트 테이블에서 계산 된 계수 만들기 here. 이로 인해 테이블 ​​인스턴스가 손상되었습니다 (차원 테이블에 너무 많은 레코드가 있음)
  • DAX TOPN 함수를 사용하여 테이블 형식 모델에서 간단한 DAX 문을 직접 실행합니다. 이것은 TOPCOUNT MDX 방식보다 3-4 배 더 느립니다.
+0

나는 해결책이 확실하지 않지만 곧 PowerPivot을 사용하여 게임을 시작할 계획입니다. xl 32 비트 또는 64 비트를 사용하고 있습니까? 이 데이터를 처리하기 위해 어떤 램을 사용하고 있습니까? – whytheq

+0

우리는 PowerPivot을 사용하지 않습니다. 우리는 SQL Server Analysis Services를 테이블 형식 모드로 사용하고 있습니다 (기본적으로는 동일하지만 서버 환경에 배포됩니다). 문제의 서버는 32GB의 RAM을 가지고 있는데,이 모델은이 모델에 충분합니다.이 메모리는 처리 된 후 약 1GB의 메모리 만 차지합니다. – Dan

+0

TopCustomers라는 옵션이 별도의 차원으로 생성됩니까? ETL에서 계산 된 열로 상위 X 고객을 미리 계산 한 다음이 값을 Excel/MDX 쿼리에서 ROWS로 사용하고 열에서 측정 값으로 사용합니까? 위에 언급 한 것처럼 좋은 성능을 얻을 수 없다면 하드웨어를 가지고 TopCustomers와 차원을 만들어가는 것이 최선의 방법 일 것입니다 ... – Mez

답변

1

웹을 좀 더 검색하고 추가 테스트를 수행 한 후 SSAS Tabular는 본질적으로 필터링되지 않은 컨텍스트에서 TOPCOUNT/RANK- 종류 쿼리에 응답하지 않습니다. 그 이유는 매우 단순한 것 같습니다 :

고객이 600.000 인 차원이 있고 필터링되지 않은 컨텍스트에서 Sales Amount로 상위 10 개를 요청하면 표 엔진은 각 개인의 Sales Amount의 합계를 계산해야합니다 고객별로 정렬하여 각 고객의 상위 10 위 또는 순위를 반환 할 수 있습니다.

다차원 OLAP에서 데이터는 일반적으로 pr에 미리 집계됩니다. 고객 수준, 즉 다차원 큐브가 이러한 종류의 쿼리에 훨씬 빠르게 응답 할 수 있습니다.

SSAS 테이블 형식 (예 : 당월, 특정 제품 등)에 하나 이상의 필터를 적용하면 상당한 성능 향상을 보았습니다. 필자의 경우 솔루션은 피벗 테이블에 고객 특성 항목을 포함하기 전에 사용자가 항상 데이터를 필터링하도록 교육하는 것입니다.

관련 문제