본문 바로가기
WIKI 기술 지식 베이스

시각화에서 rollup 함수와 카디널리티 이해하기

원문 보기 위키 갱신

데이터 분석의 시각화는 시간에 따라 데이터를 요약하기 위해 집계 함수에 의존하는 경우가 많아요. 여기서 자주 생기는 어려움은 rollup 함수와 distinct(또는 unique) 카디널리티 측정이 서로 상호작용하며, 데이터를 시각화할 때 예상치 못한 결과를 만들 때랍니다. rollup 결과의 특성에 기대를 맞추고 명확한 쿼리를 사용하면 데이터에서 가치 있는 통찰을 얻을 수 있어요.

출처: 문서

본문

개요

데이터 분석의 시각화는 시간에 따라 데이터를 요약하기 위해 집계 함수에 의존하는 경우가 많아요. 하나의 공통된 어려움은 rollup 함수와 distinct 또는 unique 카디널리티 측정이 서로 상호작용할 때 발생하는데, 이런 상호작용이 데이터를 시각화할 때 예상치 못한 결과로 이어질 수 있어요.

rollup 결과의 특성에 기대를 맞추고 명확한 쿼리를 사용하면 데이터에서 가치 있는 통찰을 얻을 수 있어요. 이 문서는 rollup 함수(특히 카디널리티 맥락에서)가 어떻게 동작하는지 설명하고, 시각화 결과를 정확히 해석하는 모범 사례를 제공해요.

timeseries에서의 카디널리티 이해

웹사이트를 방문하는 사용자를 추적하는 시나리오를 생각해 봅시다. 7일 동안 매일 100명의 사용자를 관찰한다면 총 700명의 사용자로 추정하게 돼요. 하지만 그 주(week) 동안 실제 고유(unique) 사용자 수는 400명일 수 있는데, 많은 사용자가 여러 날에 걸쳐 사이트를 방문하기 때문이에요. 이 불일치는 각 시간 프레임(예: 각 날짜)이 독립적으로 고유 사용자를 세기 때문에, 더 길고 단일한 롤업 타임프레임과 비교하면 합계가 부풀려지기 때문에 발생해요.

이 직관에 반하는 결과는 카디널리티 때문인데, 카디널리티는 데이터셋에서 고유한 요소가 어떻게 집계되는지를 말해요. 각 시간 버킷의 카디널리티는 복잡할 수 있어요. 사용자를 분석할 때 "이번 주에 매일 사이트를 방문한 고유 사용자는 몇 명인가?"라는 질문을 생각해 보세요. 사용자가 서로 다른 이틀을 방문하면 각 날짜에 대해 고유하게 집계돼요.

rollup이 평균에 미치는 영향

rollup 함수는 시각화에서 평균이 계산되고 표시되는 방식에도 큰 영향을 미쳐요:

  • 평활화 효과:

    • 더 짧은 시간 기간(5분 롤업)은 더 세밀한 스파이크와 변동을 보여줘요.
    • 더 긴 시간 기간(30분 롤업)은 더 부드러운 그래프를 만들어요.
  • 평균 계산:

    • 더 짧은 시간 기간에서는 Datadog이 그 정확한 순간의 사용자만 포착하기 때문에 평균이 더 낮을 수 있어요.
    • 더 긴 시간 기간에서는 Datadog이 다른 장치를 사용하는 사용자의 더 많은 인스턴스를 포착하므로 평균이 더 높을 수 있어요.

예시: rollup이 고유 사용자 수에 미치는 영향

시각화는 서로 다른 간격에 걸친 값의 합을 표시하는데, 이는 시간 기간 간의 합계를 비교할 때 혼란을 만들 수 있어요. 예를 들어 같은 메트릭이 다른 시간 스케일(5분 대 30분 간격)로 볼 때 다른 합계를 보여줄 수 있어요. 이 차이는 사용자가 더 짧은 시간 윈도우에서는 여러 번 집계될 수 있지만, 더 긴 시간 윈도우에서는 한 번만 집계되기 때문에 발생해요.

이 섹션은 rollup 함수와 카디널리티가 실제로 어떻게 상호작용하는지 보여주는 예시를 살펴봅니다. 모바일과 데스크톱에서 사용자 세션을 추적하는 웹사이트를 생각해 봅시다.

모바일에서 세션의 평균을 내고 30분마다 롤업하면 부드러운 버전의 그래프를 얻어요. 이 평활화 효과는 rollup 함수의 자연스러운 결과이며, 장기 트렌드를 위해 시각화를 더 해석하기 쉽게 만들어요.

{% image source="https://docs.dd-static.net/images/dashboards/guide/rollup-cardinality-visualizations/pct_total_mobile_sessions.df7370ce25127a5443849d51fc2c4993.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/dashboards/guide/rollup-cardinality-visualizations/pct_total_mobile_sessions.df7370ce25127a5443849d51fc2c4993.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Line chart displaying percentage of total sessions on mobile rolled up every 5 minutes (purple line) compared to 30 minutes (pink line). The purple line is spiky. The pink line is smooth and overlaps with the blue line." /%}

{% collapsible-section %}

설정

{% image source="https://docs.dd-static.net/images/dashboards/guide/rollup-cardinality-visualizations/pct_total_mobile_sessions_config.d43c32b1a2329d82afe921e02779658f.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/dashboards/guide/rollup-cardinality-visualizations/pct_total_mobile_sessions_config.d43c32b1a2329d82afe921e02779658f.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Configuration showing the query settings for percentage of total mobile sessions with rollup function applied" /%}

{% /collapsible-section %}

하지만 사용자별로 그룹화하면 두 그래프는 겹치지 않아요: 30분 그래프가 5분 그래프보다 훨씬 높아요. 언뜻 버그처럼 보일 수 있지만, 실제로는 사용자가 서로 다른 시간 기간에 걸쳐 서비스를 어떻게 상호작용하는지 보여주는 거예요.

{% image source="https://docs.dd-static.net/images/dashboards/guide/rollup-cardinality-visualizations/pct_unique_users_mobile.b94c98f97e4bd9d443d29bd3782142b2.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/dashboards/guide/rollup-cardinality-visualizations/pct_unique_users_mobile.b94c98f97e4bd9d443d29bd3782142b2.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Line graph displaying percentage of unique users on mobile rolled up every 5 minutes (purple line) compared to 30 minutes (pink line). The smooth pink line is higher than the spiky purple line." /%}

{% collapsible-section %}

설정

{% image source="https://docs.dd-static.net/images/dashboards/guide/rollup-cardinality-visualizations/pct_unique_users_mobile_config.b55e41dedcdaa7885fbecb2be4aa88fd.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/dashboards/guide/rollup-cardinality-visualizations/pct_unique_users_mobile_config.b55e41dedcdaa7885fbecb2be4aa88fd.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Configuration showing the query settings for percentage of unique users on mobile with 5min and 30 min rollup function applied" /%}

{% /collapsible-section %}

다음 그래프는 모바일 distinct 사용자와 전체 distinct 사용자에 대한 5분 대 30분 롤업을 살펴봐요. 30분 롤업이 5분 롤업보다 자연스럽게 크기 때문에, 이 그래프는 30분 롤업을 0.75 배율로 축소해 표시해요. 전체 distinct 사용자는 5분과 30분 롤업이 대략 일치해요. 하지만 모바일 distinct 사용자는 30분 롤업이 5분 롤업보다 훨씬 높아요. 왜 그럴까요?

{% image source="https://docs.dd-static.net/images/dashboards/guide/rollup-cardinality-visualizations/count_total_mobile_users.c76a9eac4dbf3864e18efe07cbb216a6.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/dashboards/guide/rollup-cardinality-visualizations/count_total_mobile_users.c76a9eac4dbf3864e18efe07cbb216a6.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Line graph showing four lines: total distinct users (5-minute rollup), total distinct users (30-minute rollup), mobile distinct users (5-minute rollup), mobile distinct users (30-minute rollup)." /%}

{% collapsible-section %}

설정

{% image source="https://docs.dd-static.net/images/dashboards/guide/rollup-cardinality-visualizations/count_total_mobile_users_config.cd7bc257c1c72fbcd00ca2d818bf958a.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/dashboards/guide/rollup-cardinality-visualizations/count_total_mobile_users_config.cd7bc257c1c72fbcd00ca2d818bf958a.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Configuration for scaled rollup comparison" /%}

{% /collapsible-section %}

이것은 사용자가 롤업 윈도우 동안 여러 번 나타나면, 분모에는 한 번 나타나지만 분자에는 여러 번 나타나기 때문에 발생해요.

$$\text"cardinality:@usr.name[@type:session @device.type:Mobile]" / \text"cardinality:@usr.name[@type:session]" * 100$$

이를 이해하는 또 다른 방법은 사용자가 윈도우에서 여러 번 나타나면, 나타날 때마다 분자에 나타날 기회가 된다는 거예요. 더 긴 시간 프레임에서는 각 사용자가 더 많이 나타나 모바일에서 페이지를 볼 (이 경우) 기회를 더 많이 만들어요.

이를 구체적으로 설명하기 위해, 낮에는 컴퓨터로, 아침·저녁 출근 시간에만 모바일로 웹사이트를 확인하는 사용자를 상상해 봅시다. 절반은 아침 출근에, 절반은 저녁 출근에, 절반은 둘 다 확인하고(그러면 4분의 1은 모바일로 전혀 확인하지 않음):

  • 12시간 롤업은 자정부터 정오까지(아침 출근) 50%의 사용자가 모바일로 확인하고, 정오부터 자정까지(저녁 출근) 50%가 확인하는 것을 보여줘요.

  • 24시간 롤업은 모바일로 확인하는 사용자의 75%(어느 쪽 출근이든)를 보여줘요.

마찬가지로 1시간 롤업은 출근 시간 동안 모바일로 확인하는 사용자의 10-20%, 비출근 시간에는 <1%를 보여줄 수 있어요. 이것은 더 큰 타임프레임보다 훨씬 작지만 여전히 올바른 결과예요.

더 알아보기 (Learn more)

도움이 되는 추가 문서, 링크, 아티클이에요: