데이터 모델링의 모범 사례
이 섹션에서는 데이터가 구조화된 방식과 달성하려는 데이터 모델에 따라 Qlik Sense 응용 프로그램에 데이터를 로드할 수 있는 다양한 방법에 대해 설명합니다.
데이터 열을 행으로 변환
다음과 같은 데이터가 있는 경우 별도의 필드에 판매 수치를 표시하고 싶습니다.
| 년 | Q1 | Q2 | Q3 | Q4 |
|---|---|---|---|---|
| 2013 | 34 | 54 | 53 | 52 |
| 2014 | 47 | 56 | 65 | 67 |
| 2015 | 57 | 56 | 63 | 71 |
제안 조치
테이블을 로드할 때 Crosstable 접두사를 사용하십시오.
결과는 다음과 같습니다.
| Year | Quarter | Sales |
|---|---|---|
| 2013 | Q1 | 34 |
| 2013 | Q2 | 54 |
| 2013 | Q3 | 53 |
| 2013 | Q4 | 52 |
| 2014 | Q1 | 47 |
| ... | ... | ... |
Crosstables에 대한 자세한 내용은 데이터 로드 스크립트에서 교차 표 작업 및 Crosstable를 참조하십시오.
데이터 행을 필드로 변환
아래와 비슷한 세 개의 필드가 포함된 일반적인 테이블이 있는 경우 각 특성을 개별 테이블로 표시하고 싶습니다.
| Object | Attribute | Value |
|---|---|---|
| ball | color | red |
| ball | diameter | 25 |
| ball | weight | 3 |
| box | color | 56 |
| box | height | 30 |
| box | length | 20 |
| box | width | 25 |
제안 조치
Generic 로드 접두사를 사용하여 일반 데이터 모델을 만듭니다.
다음과 같은 데이터 모델을 얻게 됩니다.
일반 데이터에 대한 자세한 내용은 일반 데이터베이스 및 Generic를 참조하십시오.
계층 수준으로 구성된 데이터(예: 조직 체계) 로드
다음과 같이 인접한 노드 테이블에 데이터가 저장되어 있습니다.
| NodeID | ParentNodeID | Title |
|---|---|---|
| 1 | - | General manager |
| 2 | 1 | Country manager |
| 3 | 2 | Region manager |
제안 조치
Hierarchy 접두사를 통해 데이터를 로드하여 확장 노드 테이블을 만듭니다.
| NodeID | ParentNodeID | Title | Level1 | Level2 | Level3 |
|---|---|---|---|---|---|
| 1 | - | General manager | General manager | - | - |
| 2 | 1 | Country manager | General manager | Country manager | - |
| 3 | 2 | Region manager | General manager | Country manager | Region manager |
계층 수준에 대한 자세한 내용은 계층 구조 데이터 로드 및 Hierarchy를 참조하십시오.
대규모 데이터베이스에서 신규 또는 업데이트된 레코드만 로드
레코드가 많은 데이터베이스가 있는데, 응용 프로그램의 데이터를 새로 고치기 위해 전체 데이터베이스를 다시 로드하고 싶지 않습니다. 신규 또는 업데이트된 레코드만 로드하고 데이터베이스에서 삭제된 레코드는 제거하고 싶습니다.
제안 조치
QVD 파일을 사용하여 증분 로드 솔루션을 구현하십시오.
자세한 내용은 증분 로드를 통해 새 레코드 및 업데이트된 레코드 로드을 참조하십시오.
공통 필드를 사용하여 두 테이블의 데이터 결합
Qlik Sense에서는 공통 필드를 사용하여 자동으로 테이블을 연결하지만 해당 테이블 결합 방법을 제어하고 싶습니다.
제안 조치 : Join / Keep
Join 또는 Keep 접두사를 사용하여 두 테이블을 단일 내부 테이블로 결합할 수 있습니다.
자세한 내용은 Join 및 Keep을 사용한 테이블 결합을 참조하십시오.
제안 조치 : 매핑
테이블을 조인하는 다른 방법은 매핑 테이블에서 연관 값의 조회를 자동화하는 매핑을 사용하는 것입니다. 이 방법으로 로드할 데이터 양을 줄일 수 있습니다.
자세한 내용은 조인에 대한 대안으로 매핑 사용을 참조하십시오.
간격에 불연속 값 일치
불연속 숫자 값 테이블(Event)이 있고 이를 하나 이상의 간격(Start 및 End)에 일치시키고 싶습니다.
| 시간 | 이벤트 | 주석 |
|---|---|---|
| 00:00 | 0 | 이동 1 시작 |
| 01:18 | 1 | 라인 중단 |
| 02:23 | 2 | 라인 다시 시작 50% |
| 04:15 | 3 | 라인 속도 100% |
| 08:00 | 4 | 이동 2 시작 |
| 11:43 | 5 | 종료 또는 생산 |
| 시작 | 끝 | 순서 |
|---|---|---|
| 01:00 | 03:35 | A |
| 02:30 | 07:58 | B |
| 03:04 | 10:27 | C |
| 07:23 | 11:43 | D |
제안 조치
IntervalMatch 접두사를 사용하여 Time 필드를 Start 및 End에 의해 정의된 간격과 연결하십시오.
자세한 내용은 간격과 불연속 데이터의 연결를 참조하십시오.
시작 및 종료로 간격이 명확하게 정의되어 있지 않고 아래 테이블에서처럼 변경 타임스탬프만 있는 경우, 간격 테이블을 만들어야 합니다.
| 통화 | 데이터 변경 | 환율 |
|---|---|---|
| 유로 | - | 8.59 |
| 유로 | 28/01/2013 | 8.69 |
| 유로 | 15/02/2013 | 8.45 |
| USD | - | 6.50 |
| USD | 10/01/2013 | 6.56 |
| USD | 03/02/2013 | 6.30 |
자세한 내용은 단일 날짜에서 날짜 간격 만들기을 참조하십시오.
일관성 없는 필드 값 처리
여러 테이블에 일관성 없이 이름이 지정된 필드 값이 포함된 데이터가 있습니다. 예를 들어 한 테이블에는 Country에 US 값이 있고 다른 테이블에는 United States이 포함되어 있습니다. 이런 경우 연결이 수행되지 않습니다.
| 국가 | 지역 |
|---|---|
| 미국 | 메릴랜드 |
| 미국 | 아이다호 |
| 미국 | 뉴욕 |
| 미국 | 캘리포니아 |
| Country | Population |
|---|---|
| United States | 304 |
| Japan | 128 |
| Brazil | 192 |
| China | 1333 |
제안 조치
매핑 테이블을 사용하여 데이터 정리 작업을 수행하십시오. 그러면 필드 값을 비교하여 올바른 연결을 수행할 수 있습니다.
자세한 내용은 데이터 정리를 참조하십시오.
일관성 없는 필드 값 대소문자 처리
여러 테이블에 일관성 없이 서식 지정된 필드 값이 포함된 데이터가 있습니다. 예를 들어 한 테이블에는 Type에 single 값이 있고 다른 테이블의 동일한 필드에는 Single이 포함되어 있습니다. 이런 경우 Type 필드에 single과 Single 값을 모두 포함하게 되면 연결이 수행되지 않으므로 대소문자 처리가 중요합니다.
| 유형 | 가격 |
|---|---|
| 단일 | 23 |
| 더블 | 39 |
| 유형 | 색 |
|---|---|
| 단일 | 빨강 |
| 단일 | 파랑 |
| 더블 | 흰색 |
| 더블 | 검은색 |
제안 조치
데이터 추가를 사용하여 데이터를 로드한 경우에는 데이터 관리자에서 이를 해결할 수 있습니다.
다음과 같이 하십시오.
- 데이터 관리자의 테이블 편집기에서 Table2를 엽니다.
-
Type 필드의 이름을 Table2.Type으로 변경합니다.
데이터 프로파일링이 활성화된 상태에서 데이터 추가를 사용하여 테이블을 추가한 경우에는 해당 필드가 자동 연결을 방지하기 위해 이미 Table2.Type으로 이름이 지정되어 있을 수 있습니다. 이런 경우는 이 절치에서 두 테이블을 연결합니다.
- 표현식 Lower(Table2.Type)을 사용하여 계산 필드를 만들고 Type으로 이름을 지정합니다.
- 데이터 로드를 클릭합니다.
이제 Table1 및 Table2는 single과 double처럼 소문자 값만 포함하는 Type 필드에 의해 연결되어야 합니다.
대소문자를 다르게 사용하고 싶은 경우에도 비슷한 절차를 통해 작업을 수행할 수 있지만 테이블은 동일한 이름의 필드를 사용하여 연결된다는 점을 기억하십시오.
- Single처럼 모든 값의 첫 문자를 대문자로 표시하려면 대신 Table1의 계산된 Type 필드를 만들고 표현식 Capitalize(Table1.Type)을 사용합니다.
- SINGLE처럼 모든 값을 대문자로 표시하려면 두 테이블 모두에서 계산된 Type 필드를 만들고 표현식 Upper(Table1.Type) 및 Upper(Table2.Type)을 각각 사용합니다.
계산된 필드에 대한 자세한 내용은 계산 필드 사용을 참조하십시오.
대소문자 처리에 대한 자세한 내용은 Capitalize 스크립트 및 차트 함수, Lower 스크립트 및 차트 함수 및 Upper 스크립트 및 차트 함수을 참조하십시오.
특정 지역 관련 데이터를 로드하여 맵으로 데이터 시각화
국가별 또는 매장별 판매량 데이터 등과 같이 맵을 사용하여 시각화하고 싶은 데이터가 있습니다. 맵 시각화를 사용하려면 영역 또는 포인트 데이터를 로드해야 합니다.
제안 조치
KML 파일 또는 Excel 파일에서 데이터 값 위치를 일치시킬 영역 또는 포인트 데이터를 로드할 수 있습니다. 또한 실제 맵 배경도 로드해야 합니다.
자세한 내용은 자체 맵 데이터 로드을 참조하십시오.