탁월한 성능 : 조회 대 Getpivotdata


2

소스 데이터가있는 더 큰 테이블 (약 500,000 행 10 열)이 포함 된 Excel 2007 스프레드 시트를 만듭니다. 분석을 위해이 큰 테이블에서 데이터를 추출해야합니다. 데이터를 추출하고 집계하기 위해 보통 sumif, vlookup / hlookup 및 index + match 함수를 사용합니다.

최근에 getpivotdata 함수의 존재에 대해 배웠으므로 피벗 테이블에서 데이터를 추출 할 수 있습니다. 그것을 사용하려면 먼저 큰 소스 테이블을 피벗 테이블로 변환 한 다음 getpivotdata 함수를 사용하여 데이터를 추출 할 수 있습니다.

getpivotdata를 사용하여 데이터를 추출하고 집계하는 경우 성능이 향상 될 것으로 예상하십니까? 기본 피벗 개체 내에서 집계 된 값이 미리 계산되어 성능이 향상 될 것으로 기대합니다.

성능이 더 좋으면이 방법을 따르지 않는 이유가 있습니까? 명확하게하기 위해 피벗 테이블에는 계산 체인의 시작 부분에있는 소스 데이터가 포함되어 있으므로 피벗 테이블을 새로 고칠 필요가 없습니다.

답변:


2

Excel 2007과 함께 듀얼 코어 2.33GHz 2GB RAM 데스크톱 PC에서 몇 가지 성능 테스트를 수행했습니다.

조회는 241,000 개의 레코드가있는 테이블에서 수행되었습니다. 결과는 다음과 같습니다 (가장 빠른 속도와 가장 느린 속도).

  1. 정렬 된 목록 에서 인덱스 일치 기능을 사용하면 초당 조회 수는 180,000 !! (8 초 동안 1,440,000 조회를 기반으로 함). Excel에서 정렬 된 조회를 구현하는 방법에 대한 자세한 내용은 여기 에서 찾을 수 있으며 한 수식, 정렬 된 데이터의 INDEX-MATCH 섹션으로 스크롤 하십시오.

  2. getpivotdata 함수를 사용하면 초당 조회 수는 6,000 개 (40 초에 250,000 회 조회 기준)입니다.

  3. 매우 유연한 단일 인수 문자열 구문을 사용 하는 getpivotdata 함수 ( 여기 참조 )의 초당 조회 수는 2,000 (145 초의 250,000 조회 기준)입니다.

  4. 정렬되지 않은 목록 에서 인덱스 일치 기능을 사용하면 초당 조회 수는 500 개 (35 초 동안 20,000 회 조회 기준)입니다.

조회 기능 이 명명 된 범위 대신 데이터 테이블을 참조 할 때 결과가 변경되지 않습니다 .

질문에 대답합니다. getpivotdata에 의한 조회는 일반 색인 일치 조회보다 약 10 배 빠르지 만 소스 데이터를 정렬하여 최상의 성능 향상을 달성합니다. 소스 데이터를 정렬하면 조회 속도가 400 배 빨라질 수 있습니다.



0

GetPivotData를 사용하면 피벗 테이블 보고서에 표시되는 내용에만 액세스 할 수 있습니다. 이 스프레드 시트의 유일한 사용자 인 경우이 방법이 적합 할 수 있습니다.

대부분의 집계를 수행하도록 피벗을 디자인 할 수 있으면 GetPivotData를 사용하는 것이 더 빠릅니다.

GetPivotData 성능을 테스트하지는 않았지만 정렬 된 데이터에서 이진 검색 조회 / 일치보다 느릴 것으로 예상합니다.


피벗은 원래 데이터와 동일하게 보이도록 설계되었으므로 500,000 개의 행 (모든 부분 합계를 숨기고), 데이터 섹션을 제외한 데이터 열을 제외하고 행 섹션에 9 개의 차원을 모두 배치합니다. 피봇 보고서의

2
피벗이 집계를 수행하지 않으면 더 많은 작업을 수행해야하기 때문에 GetPivotData가 느려질 것으로 예상합니다.하지만 그저 추측에 불과합니다. 실제로는 테스트하지 않았습니다.

피벗은 새로 고침시에만 집계를 수행해야한다고 가정하고 기본 데이터가 고정되어 있기 때문에 새로 고침을 수행하지 않습니다. 조회 목적으로 만 GetPivotData 함수를 사용합니다.
Ruut

0

나는 매일 같은 문제가 있습니다. Excel의 여러 데이터 테이블에 많은 수의 행이 있습니다.

현재 매우 큰 테이블을 사용 가능하게 만드는 유일한 솔루션은 데이터베이스 서버로 테이블을 내보내고 Sumif, Vlookups 및 집계를 수행하기 위해 SQL 쿼리 를 작성 / 작성 하는 것입니다.

Excel을 사용하여 SQL 쿼리 를 만들 수 있습니다.

몇 년 동안 시트 / 테이블을 " MySQL "및 " MS SQL Server express "로 내 보낸 다음 Excel로 작성하고 SQL 쿼리를 작성했습니다.

서버는 처리 속도 엑셀에 비해 수행 하고 데이터베이스가 다른 서버에있는 경우 그것의 계산을 수행하는 PC의 자원을 사용하지 않을 이후 성능 향상.

이 솔루션에는 다른 이점도 있습니다.

마찬가지로 ETL 자동화 하고 오히려 "BIG"스프레드 시트보다 연결 문자열의 공유.


다시 말해, 올바른 상황에 적합한 도구 (DB)를 사용하는 경우 (조회해야하는 많은 양의 데이터) 상황이 더 잘 작동합니다.
Hennes

Excel의 외부 데이터베이스에 대한 ODBC 링크에 매우 익숙합니다. 이 경우 독립 실행 형 Excel 기반 시스템을 원하며 가장 효율적인 솔루션을 찾고 있습니다.
Ruut
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.