Qlik Sense에서는 다양한 차트 유형을 지원합니다. 시각화에서 기본적인 차트가 막대형 차트일 것입니다. 이번 글에서는 Qlik Sense로 다양한 막대형 차트를 작성할 수 있는 테크닉을 소개합니다. 내용은 초급부터 고급 기능까지 소개됩니다. 본인의 기술 능력에 맞추어서 사용하길 바랍니다.
막대형 차트의 소개
막대형 차트는 여러 값을 비교하는 데 적합합니다. 차원 축에는 비교하는 범주 항목이 표시되고 측정값 축에는 각 범주 항목에 대한 값이 표시됩니다.
사용 시기
막대를 그룹화 및 누적하면 그룹화된 데이터를 시각화하기 쉬워집니다. 또한 막대형 차트는 값을 나란히 비교하는 경우(예: 여러 연도에 대해 판매량을 예상 판매량과 비교하는 경우) 및 동일한 단위를 사용하여 측정값(이 경우에는 판매량 및 예상 판매량)을 계산하는 경우에도 유용합니다.
장점: 막대형 차트는 쉽게 판독하고 이해할 수 있습니다. 막대형 차트를 사용하면 값의 개요를 한눈에 파악할 수 있습니다.
단점: 막대형 차트는 축 길이의 한계로 인해 차원 값이 많으면 잘 작동하지 않습니다. 차원이 맞지 않으면 스크롤 막대를 사용하여 스크롤할 수 있지만 전체적인 그림을 보지 못할 수 있습니다.
1개 측정값, 1개 차원
2차원, 2개 측정값
차원 없음, 측정값 최대 15개
차원 1개, 측정값 최대 15개
이번 글에서 소개할 전체 내용의 그림입니다.
스타일링 적용 및 색상 지정
스타일링 적용 및 색상 지정
스타일링 적용
속성 -> 모양 -> 프레젠테이션 -> 스타일링 메뉴에서 윤곽선 너비 및 색상 지정
색상 및 범례 -> 색상 -> 사용자지정 -> 측정값 기준 -> 라이브러리 색 : 켜기
연속형 차원(연도, 월 등) 일 경우 색상을 차원 기준으로 지정하지 않고 측정값 기준으로 색상을 지정합니다.
막대를 중앙에 배열
모양 -> Y축 : Sales -> 레이블 및 제목 : 없음 선택
색상 지정 – 차원
차원을 마스터 항목에 등록
마스터 항목에서 등록된 차원 편집 -> 값색 지정
불연속 차원일 경우 각 차원의 값별로 고유색 지정
조건에 따른 색상 지정
속성 -> 모양 -> 색상 -> 사용자 지정 -> 표현식 기준
식 : If (Sales-Target < 0, LightRed(), '#00aaee')
Sales, Target 는 마스터 항목에 지정되었음.
식 :If (Var < 0, LightRed(), '#00aaee')
Var은 데이터의 레이블 입니다.
수식편집기에서 에러메시지가 표시되지만 작동 됩니다.
정렬
차원의 정렬순서는 기본적으로 차원명 기준으로 정렬됩니다. 사용자가 부서명 혹은 측정값 기준으로 정렬순서를 지정할 수 있습니다.
속성 -> 정렬 -> Dept -> 사용자 지정 -> 표현식으로 정렬 -> 내림차순
식 : Sales
Sales 는 마스터 항목에 지정되어 있어야 함.
마스터 항목에 지정하지 않을 경우 Sum(Sales) 수식을 사용합니다.
부서별 등록순으로 정렬을 하고자 할 경우 속성 -> 정렬 -> Dept -> 사용자 지정 : 모든 항목 체크 해제합니다.
일반적으로 로드 스크립트에서 부서명에 정렬순서 필드와 통합하여 Dual 함수로 선언합니다. 그러면 시각화에서는 선언된 정렬순서로 시각화에 적용됩니다.
수정자를 이용한 연도별 누적
측정값은 필드(예: Sum(Sales))를 기반으로 한 계산입니다. 수정자를 사용하여 사용 가능한 차원에서 측정값을 계산하는 방법을 변경할 수 있습니다.
측정값 식 밑에 수정자 버튼이 있습니다. 수정자를 선택하고 수정자의 유형을 선택할 수 있습니다. 유형은 누적, 차이, 이동평균, 상대 숫자를 제공합니다.
선택된 유형에 따른 표현식이 생성됩니다.
측정값1 : Sales
측정값2 : Sales,
수정자 -> 누적 선택
자세한 내용은 도움말을 참조하세요.
https://help.qlik.com/ko-KR/sense/May2022/Subsystems/Hub/Content/Sense_Hub/Measures/modifiers.htm
추세선을 이용한 평균 및 선형 회귀선 추가
추세선은 일정 기간의 값 방향에 대한 시각적 표현입니다. 추세선은 값의 방향과 값이 얼마나 빨리 변경되는지를 시각화함으로써 시간에 따른 추세를 보여 줍니다.
추세선의 유형은 평균, 선형, 다항식(2차, 3차, 4차), 지수, 로그, 거듭제곱을 제공합니다.
https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Measures/trend-lines.htm
참조선 평균 추가 및 평균 비교 색상 지정
참조선으로 평균값을 추가하고 막대가 평균값과 비교하셔 색상을 지정합니다.
속성 -> 추가기능 -> 참조선 메뉴 활용
참조선으로 평균 추가 및 평균값 비교하여 색상지정
참조선 수식 : Sum(Sales)/Count(Distinct Dept)
레이블 지정, 색상, 선 유형 지정
색상 : 표현식 기준
색상 수식 :
If (Sales < Avg_Sales, LightGray(), '#4477aa')
Sales 및 Avg_Sales 마스터 항목에 등록되어 있슴.
Avg_Sales : Sum(Total Sales)/Count(Total Distinct Dept)
상위 2개에 색상 지정 – 실적기준으로 상위 n%에 색상 지정
색상 수식 :
표현식 기준
If (Rank(sum(Sales)) <= 2, '#4477aa', LightGray())
실적순으로 내림차순으로 정렬
상위2개에 색상지정 및 차원 참조선 추가
추가기능 -> 차원 참조선 수식 :
=only({<Dept = {"=Rank(sum(Sales))=2"}>} Dept)
실적순으로 내림차순으로 정렬
누적80% 색상 지정 및 차원 참조선
추가기능 -차원 참조선 수식 :
=subfield(subfield(concat(
Aggr(
If(Rangesum(Above(Sum( Sales)/Sum( total Sales),1,RowNo()))<=0.8, rank(Sum(Sales))&'-'&Dept),
(Dept,(=Sum( Sales),Desc))
)
,',' ),',',-1),'-',2)
색상 수식 :
If (Rangesum(Above(Sum( Sales)/Sum( total Sales),1,RowNo())) < 0.8, '#4477aa', LightGray())
차원 1, 측정값 1 개 누적차트
차원 1, 측정값 1 개인 경우 누적을 할 수 없습니다. 2개의 차원 및 1개의 측정값 혹은 1개의 차원 및 n개의 측정값인 경우 누적 가능합니다.
해결책 :
차원에 Dummy 차원 추가 , Y 축 : 레이블 및 제목을 없앤다.
차원1의 수식 : ' ' // Dummy 차원
차원2의 수식 : Dept
측정값 : Sum(Sales)
프레젠테이션에 누적 선택
정렬 : Dept -> 표현식 -> 내림차순 -> 식 : Sum(Sales)
차원명 및 측정값 및측정값 2개 이상 표현
측정값 레이블을 사용자가 지정
기본적으로 측정값은 측정값 수식의 결과가 표현됩니다.
차원명 및 측정값을 동시에 표현
측정값 수식 :
Dual(Only(Dept) & '('&Num(Sum(Sales), '#,##0') & ')', Sum(Sales))
측정값2개 표현 : 실적 및 전체 실적에 대한 %
Dual(Num(Sum(Sales), '#,##0') &' / ' & Num(Sum(Sales)/Sum(Total Sales), '#,##0.#%') , Sum(Sales))
2개의 차원에 1개의 측정값 표현
1개차원에 2개의 측정값 표현
측정값을 마스터 항목에 지정하고 마스터 항목에서 측정값에 대한 색상을 지정합니다.
누적 차트로 평균값을 기준으로 다른 색상 지정
측정값1 : If (Sales > Avg_Sales, Avg_Sales, Sales)
측정값2 : If (Sales > Avg_Sales, Sales-Avg_Sales, 0)
Sales 및 Avg_Sales 는 마스터 항목에서 정의됨.
측정값1, 2를 마스터항목에 등록하여 색상 지정
전체에 대한 비율
1개 차원, 1개 측정값으로 전체 비율 차트
1개 차원, 1개 측정값은 누적을 할 수 없으니 Dummy 차원 추가
측정값 수식 :
Sum(Sales) / Sum(Total Sales)
2개 차원, 1개 측정값으로 전체 비율 차트
측정값 수식 :
Sum(Sales) / Sum(Total <Year> Sales)
단일 및 누적 막대 차트
단일 및 누적 막대 (1개의 가상차원 및 n개의 측정값)
차원을 ValueList 함수로 선언 : =ValueList('실적', '상세')
측정값1 : Pick(Match(ValueList('실적', '상세'), '실적', '상세') , Sum(Sales) )
측정값2~n : Pick(Match(ValueList('실적', '상세'), '상세'), Sum({<Dept={'KOR'}>} Sales))
측정값을 마스터 항목에 등록한 후 색상 지정
차트에서 데이터 필터링
전체 부서 중 항상 JPN, FRN를 제외한 실적을 조회하고자 합니다.
일부 데이터를 제거하는 가장 쉬운 방법은 다음과 같습니다.
1.먼저 삭제할 데이터를 Dept 필터 차트에서 선택합니다.
2. 표현식 편집기를 사용하여 측정값 내부에 집합 표현식을 삽입합니다.
3. 삽입 후 등호 앞에 "-"를 추가하면 선택 항목에서 현재 선택 항목이 제외됩니다.
Sum({<Dept-={'JPN','FRN'}>}Sales)
차원에 If 문을 사용
단점 : Selection에 수식으로 표현됨
차원 : =If (Dept <> 'JPN' And Dept <> 'FRN', Dept)
목표 대비 실적 차이
목표 대비 미달성 수치 및 목표 대비 초과 달성 수치를 누적 막대로 표현함.
목표 대비 실적 차이
차원 : =ValueList('Under Target','Target','Over Target')
측정값 : if(ValueList('Under Target','Target','Over Target') = 'Under Target',
if(sum(Sales) >= sum(Target), 0, sum(Sales)),
if(ValueList('Under Target','Target','Over Target') = 'Target',
if(sum(Sales) > sum(Target), sum(Target),
if(sum(Sales) < sum(Target), sum(Target) - sum(Sales), 0)),
if(ValueList('Under Target','Target','Over Target') = 'Over Target',
if(sum(Sales) > sum(Target), sum(Sales) - sum(Target), 0))))
색상 : Pick(Match(
ValueList('Under Target','Target','Over Target'),
'Under Target', 'Target', 'Over Target'),
rgb(255,100,100), rgb(120,120,120), rgb(100,200,100))
정렬 : Dept -> 표현식 -> 내림차순 -> Sum(Sales)
목표 대비 실적 달성 비율
측정값 :if(ValueList('Under Target','Target','Over Target') = 'Under Target',
if(sum(Sales) >= sum(Target), 0, sum(Sales)),
if(ValueList('Under Target','Target','Over Target') = 'Target',
if(sum(Sales) > sum(Target), sum(Target),
if(sum(Sales) < sum(Target), sum(Target) - sum(Sales), 0)),
if(ValueList('Under Target','Target','Over Target') = 'Over Target',
if(sum(Sales) > sum(Target), sum(Sales) - sum(Target), 0))))
/ sum(Target)
문제점 :
차원을 ValueList 문을 사용하고, 측정값을 1 개로 지정하였기 때문에 범례를 생성할 수 없습니다.
필요하면 텍스트 차트를 생성하여 범례를 작성합니다.
사용자 레이블 강제 표현
측정값이 작으면 화면에 표시되지 않습니다. 이 경우 참조선을 활용하여 강제로 표현한다.
참조선에는 수식과 색상 등을 지정할 수 있습니다.
누적 형태는 Dual 함수를 적용되지 않습니다.
참조선 표현식 : =(Sum({<Dept={"=Rank(Sum(Sales))=1"}>} Sales))*0.64
참조선 레이블 : =Only({<Dept={"=Rank(Sum(Sales))=1"}>} Dept) & '(' & Num(Sum({<Dept={"=Rank(Sum(Sales))=1"}>} Sales), '#,##0') & ')'
레이블 표시 체크, 값 표시 체크 해제
동일한 방법으로 참조선을 추가합니다.
For more information
https://qliksense.tistory.com/
https://blog.naver.com/about_qlik
Qliker
예제 앱이 필요한 분은 별도 문의
첨부된 파일에는 암호가 설정되어 있습니다. (Qliker의 고객사를 위한 자료입니다.)
양해 바랍니다.
'Qlik Sense 개발가이드' 카테고리의 다른 글
누적 막대차트에 레이블 강제로 표시 (0) | 2022.07.21 |
---|---|
클릭센스 : 누적 바차트에 사용자 레이블 사용 (0) | 2022.07.21 |
클릭센스 테이블에 1000개의 컬럼표시 (0) | 2022.07.20 |
차트에서 데이터 필터링 – 차트에서 특정값 제외 (0) | 2022.07.20 |
[클릭센스 개발 팁]시트 동작에 기능에 필드에 복수개 값 지정 (0) | 2022.07.17 |