>데이터 베이스 >MySQL 튜토리얼 >OLAP: 큐브, 롤업 및 그룹화 세트

OLAP: 큐브, 롤업 및 그룹화 세트

WBOY
WBOY원래의
2024-07-16 15:16:421071검색

OLAP: CUBE, ROLLUP, AND GROUPING SETS

데이터 분석 및 비즈니스 인텔리전스 영역에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.