집 >데이터 베이스 >MySQL 튜토리얼 >OLAP: 큐브, 롤업 및 그룹화 세트
데이터 분석 및 비즈니스 인텔리전스 영역에서 OLAP(온라인 분석 처리)는 방대한 데이터 세트에 대한 다차원 분석을 촉진하는 초석 기술입니다. OLAP을 사용하면 사용자는 데이터를 다양한 차원에 걸쳐 분석하여 데이터로부터 통찰력을 얻을 수 있으며 비즈니스 지표와 성과에 대한 포괄적인 보기
를 제공합니다.이제 우리는 OLAP의 세 가지 핵심 기능인 CUBE, ROLLUP, GROUPING SETS 연산자에 대해 논의하겠습니다. 이는 다양한 방식으로 데이터를 요약하고 집계하는 데 중추적인 역할을 하게 될 것입니다.
먼저 첫 번째 항목에 대해 논의해 보겠습니다.
큐브는 OLAP의 강력한 도구로 차원과 집계의 가능한 모든 조합을 생성할 수 있습니다. 모든 차원 조합에 대한 소계와 합계를 계산하여 데이터에 대한 포괄적인 다차원 보기를 제공하므로 사용자는 다양한 관점과 세분성 수준에서 데이터를 탐색할 수 있습니다.
처음에는 다소 기술적인 내용이지만 쿼리에 사용할 때는 분명히 이해하실 것입니다.
한 국가에서 임대하는 각 사람의 수와 성별을 알고 싶다고 가정해 보겠습니다.
SELECT country, gender, COUNT(*) FROM rentals GROUP BY CUBE(country, gender) -- This one will group them by its country and gender.
그 결과는 다음과 같습니다
| country | gender | COUNT(*) | |------------|----------|----------| | USA | Male | 100 | | USA | Female | 150 | | UK | Male | 120 | | UK | Female | 130 | | NULL | Male | 220 | <-- Subtotal for Male across all countries | NULL | Female | 280 | <-- Subtotal for Female across all countries | USA | NULL | 250 | <-- Subtotal for USA across all genders | UK | NULL | 250 | <-- Subtotal for UK across all genders | NULL | NULL | 500 | <-- Grand total
각 행은 '국가'와 '성별'의 고유한 조합을 나타냅니다. 이것이 CUBE의 용도입니다. 집계한 내용을 기반으로 가능한 모든 조합을 생성합니다. 각 카테고리별 소계와 총계가 있습니다.
ROLLUP 연산자는 계층적 롤업 데이터를 생성하는 데 사용됩니다. 미리 정의된 차원 계층 구조에 대한 소계를 계산하며 일반적으로 가장 세부적인 세부 수준에서 가장 덜 세부적인 수준으로 이동합니다. 계층의 각 수준에 대한 소계를 생성하여 지정된 열의 각 조합에 대한 소계와 총합계가 포함된 결과 집합을 생성합니다. 좀 더 정리된 것 같으니 다시 예를 만들어 보겠습니다.
SELECT country, gender, COUNT(*) AS rental_count FROM rentals GROUP BY ROLLUP (country, gender);
그러면 출력은 다음과 같습니다
| country | gender | rental_count | |----------|---------|--------------| | NULL | NULL | 8 | <-- Grand total | NULL | Male | 3 | <-- Subtotal for Male across all countries | NULL | Female | 5 | <-- Subtotal for Female across all countries | USA | NULL | 3 | <-- Subtotal for USA across all genders | USA | Male | 2 | | USA | Female | 1 | | UK | NULL | 3 | <-- Subtotal for UK across all genders | UK | Male | 1 | | UK | Female | 2 |
각 카테고리의 수를 계산한 후 정리된 것을 보면 해당 카테고리의 소계가 인쇄되고 그 다음에는 총계가 표시됩니다. 각 범주에 대한 소계가 해당 범주 행 옆에 나타나는 경우가 많습니다. 이는 ROLLUP 연산자가 직관적이고 읽기 쉬운 출력을 제공하도록 설계되어 요약된 데이터 근처에 소계를 배치하기 때문입니다.
GROUPING SETS 연산자를 사용하여 그룹화 내부에 입력한 인수에 따라 그룹화를 그룹화하지만 차이점은 그 안에 그룹화할 수 있는 만큼 많은 그룹을 넣을 수 있다는 것입니다.
GROUP BY GROUPING SET ((국가, 성별), (국가), (성별)) 첫 번째 인수에서는 데이터를 국가와 성별의 조합으로 그룹화할 수 있으며 두 번째 인수에서는 국가별로만 그룹화하려고 합니다. 세 번째 주장.
1개의 쿼리에 3개의 그룹을 결합하는 것과 같습니다. 첫 번째 그룹은 (국가, 성별), 두 번째 그룹은 (국가), 세 번째 그룹은 (성별)입니다. 따라서 그룹화 세트를 사용하지 않고 동일한 결과를 얻으려면 3개의 쿼리가 필요합니다.
이해를 돕기 위해 그룹화 세트의 예를 살펴보겠습니다.
SELECT country, gender, COUNT(*) AS rental_count FROM rentals GROUP BY GROUPING SETS (country, gender, ());
그러면 출력은 다음과 같습니다
| country | gender | rental_count | |----------|---------|--------------| | NULL | NULL | 8 | <-- Grand total | NULL | Male | 3 | <-- Subtotal for Male across all countries | NULL | Female | 5 | <-- Subtotal for Female across all countries | USA | NULL | 3 | <-- Subtotal for USA across all genders | USA | Male | 2 | | USA | Female | 1 | | UK | NULL | 3 | <-- Subtotal for UK across all genders | UK | Male | 1 | | UK | Female | 2 |
여기 설명은 각 국가의 고유한 조합이고 성별이 표에 표시됩니다. 왜 ()가 있는지 궁금합니다. 빈 괄호는 해당 항목의 모든 수를 합산한다는 의미입니다. 출력되지만 이를 제거하면 각 카테고리의 소계만 표시됩니다.
CUBE와 GROUPING SETS가 왜 유사한지 궁금하신가요? 맞습니다. 하지만 큐브는 가능한 모든 조합을 가져오지만 그룹화 세트는 하나의 쿼리로 원하는 만큼 그룹화할 수 있다는 것입니다.
배워야 할 것이 많은 분들을 알고 있지만 시간이 지남에 따라 검색어에 이 항목을 계속 사용하면 각 내용을 이해할 수 있을 것입니다. 정말 감사합니다 :)
위 내용은 OLAP: 큐브, 롤업 및 그룹화 세트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!