DSPL 세대

DSPL Gen은 CSV 데이터 테이블을 간단한 DSPL 데이터 세트로 변환하는 데 도움이 되는 명령줄 유틸리티입니다. 도구는 입력 파일을 파싱하고, 필요한 모든 데이터 테이블을 만들고, DSPL XML 파일을 배치합니다. 그 결과 거의 완성되는 데이터 세트 '템플릿'을 통해 업로드 및 시각화 전에 미세 조정만 필요합니다.

DSPL 세대의 기본 가정은 입력 CSV 파일의 각 열은 단일 DSPL 개념에 해당하며 각 행은 측정기준 조합에 대한 단일 관찰이라는 것입니다. 이 도구는 열을 반복하고 각 열 / 개념에 대한 적절한 메타데이터 (예: ID, 유형, 측정기준 또는 측정항목 등)를 설정한 다음 필요한 모든 개념 정의 및 슬라이스 테이블을 생성하는 방식으로 작동합니다.

DSPL 세대 실행

문법

참고: 다음 안내는 이미 DSPL 도구 페이지에 제공된 설치 안내를 따랐다고 가정합니다.

DSPL 세대를 실행하려면 시스템의 터미널 / 메시지로 이동하여 다음을 입력하세요.

python dsplgen.py -o [output path] [path to CSV file] 

대괄호로 묶인 용어는 다음과 같이 대체됩니다.

  • [output path]: 출력 파일을 배치할 디렉터리 경로입니다. 이 디렉터리는 파일 시스템에 이미 있어야 합니다.
  • [path to CSV file]: 입력 CSV 파일의 경로입니다. 이 파일의 형식을 지정하는 방법은 아래 섹션을 참조하세요.

-o [output path] 구성요소는 선택사항입니다. 생략하면 출력 파일이 현재 디렉터리에 배치됩니다.

그런 다음 도구가 실행되어 CSV 파일을 반복하고 개념 정의를 추출하고 슬라이스 테이블을 생성합니다. 오류가 발견되지 않는 경우 XML 파일과 하나 이상의 CSV 파일이 출력 디렉터리에 작성됩니다.

마지막으로 XML 파일을 원하는 텍스트 편집기에서 열고 원하는 대로 변경합니다. 최소한 도구에서 지정한 이름, 설명, 기타 값을 ** INSERT ... ** 표기법으로 입력해야 합니다.

간단한 예

월, 국가, 연령대를 기준으로 한 질병의 총 확진자 수를 제공하는 CSV가 있다고 가정해 보겠습니다. 편의상 각 측정기준에 2개의 값이 있다고 가정합니다.

date,country,age_group,disease_cases
01/2000,US,old,102030
01/2000,MX,old,192939
01/2000,US,young,23131
01/2000,MX,young,12311
02/2000,US,old,143135
02/2000,MX,old,203131
02/2000,US,young,22990
02/2000,MX,young,12591

위 입력에서 도구를 실행하면 4개의 파일이 생성됩니다.

  • dataset.xml: DSPL XML 템플릿
  • country_table.csv: country 개념의 값
  • age_group_table.csv: age_group 개념의 값
  • slice_0_table.csv: 데이터 세트 슬라이스의 표 (입력 테이블과 동일, 정렬 제외)

이 경우 이 도구는 모든 열 유형과 형식을 올바르게 추측할 수 있습니다. 따라서 XML 파일로 이동하여 데이터 세트 메타데이터의 다양한 이름, 설명, URL을 편집하기만 하면 됩니다.

입력 CSV에 주석 달기

기본 옵션

위의 예와 같이 많은 경우 DSPL Gen은 유형, 형식, 측정기준인지 측정항목인지 등 각 열의 기본 메타데이터를 추측할 수 있습니다. 하지만 다른 경우에는 도구에서 이를 추측하지 못하거나, 잘못 추측하거나, 정확하게 추측할 수 있지만, 그럼에도 불구하고 원하는 동작을 따르지 않을 수 있습니다.

이러한 경우를 처리하기 위해 이 도구는 CSV 헤더 행에 DSPL 생성 옵션/'힌트'를 추가할 수 있도록 지원합니다. 구문은 다음과 같습니다.

column1[option1=value1;option2=value2;...],column2[option1=value1;option2=value2;...],column3[...],...

특히 옵션 목록은 열 이름 오른쪽의 대괄호 안에 배치되고 이어지는 옵션 설정은 세미콜론으로 구분됩니다. 각 옵션은 옵션 이름, 등호, 옵션 값으로 구성됩니다.

DSPL Gen은 현재 다음과 같은 기본 옵션을 지원합니다.

옵션 설명 기본
type 이 열의 DSPL 데이터 유형으로, date, float, integer 또는 string 중 하나여야 합니다. 데이터에서 추측
format 이 날짜 열의 형식입니다. DSPL과 마찬가지로 이 형식은 Joda DateTime 표준을 사용하여 인코딩되어야 합니다. 데이터에서 추측
slice_role 모든 슬라이스에서 이 열의 역할입니다. dimension 또는 metric이어야 합니다. 열이 date 또는 string 유형이면 dimension, 그렇지 않으면 metric입니다.
concept 이 열이 나타내는 표준 개념(예: geo:country). 주어진 경우 개념을 가져오고 XML 파일에 정의가 생성되지 않습니다. 없음
extends 이 열이 확장하는 표준 개념입니다(예: entity:entity). 없음
parent

이 열의 상위 개념입니다. 이 상위 요소는 데이터 세트 내에 정의된 측정기준 개념이어야 합니다 (즉, 가져올 수 없음). 제공된 경우 이 정보는 데이터 세트의 개념 계층 구조를 정의하는 데 사용됩니다.

각 하위 인스턴스에는 하나의 상위 요소만 있을 수 있습니다. 여러 상위 값이 감지되면 도구에서 오류를 생성합니다.

없음

가치 롤업

위에서 설명한 기본적인 '힌트' 옵션 외에도 DSPL Gen은 슬라이스 롤업도 지원합니다. 단일 표 입력을 입력하면 도구가 측정기준의 제한된 하위 집합을 갖는 추가 테이블을 자동으로 만들 수 있습니다. 예를 들어 입력 테이블이 시간 이외의 측정기준 3개가 있는 슬라이스에 해당하는 경우 (예: dimension1, dimension2, dimensions3) 도구는 dimension1, dimension2, dimension1 dimension2 등 추가 슬라이스도 만들 수 있습니다.

이러한 슬라이스를 추가하면 시각화를 생성하는 데 필요한 측정기준 필터 수가 줄어들기 때문에 데이터 세트를 더 쉽게 탐색할 수 있습니다. 반면 이 과정에서 원본 파일에서 찾을 수 없는 '새' 데이터가 발생할 수 있으므로, 올바르게 사용하지 않는 경우 오류가 발생할 수도 있습니다. 데이터 세트를 게시하기 전에 롤업된 숫자를 주의 깊게 확인하세요.

롤업 프로세스는 입력 CSV 헤더에 몇 가지 추가 옵션을 포함하여 트리거됩니다.

옵션 설명 기본
aggregation 이 열의 여러 값을 조합할 때 사용할 집계 메서드입니다. AVG, COUNT, MAX, MIN 또는 SUM 중 하나여야 하며 측정항목에만 의미가 있습니다. SUM
rollup 값이 true인 경우 이 열의 개념은 '롤업'(즉, 집계)되며 측정기준 개념에만 적용됩니다. 거짓
total_val 이 열이 롤업될 때 유지할 행을 나타내는 이 열의 값입니다. 측정기준 개념에만 적용됩니다. None

그러면 DSPL 세대는 다음 알고리즘을 사용하여 롤업을 계산합니다.

  • rollup 태그의 값을 사용하여 가능한 모든 열 조합을 계산합니다.
  • 각 조합에 대해 다음을 수행합니다.
    • 롤업 열에 total_val 매개변수가 설정되어 있으면 이 값으로 행을 필터링하고, 그렇지 않으면 모든 행을 선택합니다.
    • 롤업 열을 삭제합니다.
    • 나머지 측정기준 열의 값으로 행 그룹화
    • aggregation 매개변수에 지정된 메서드를 사용하여 각 측정항목을 집계합니다.
    • 결과에 대한 슬라이스 및 관련 테이블 만들기

각 그룹화에 값이 하나만 있고 집계 함수가 SUM (기본값)로 설정된 경우 소스 및 생성된 테이블의 측정항목 값은 동일합니다. 즉, 새 값이 생성되지 않습니다. 따라서 total_val 매개변수를 사용하고 다른 측정기준의 조합마다 '총계' 행이 하나만 있도록 하면 미리 계산된 집계를 소스에 직접 저장할 수 있습니다.

경고: 생성된 슬라이스 수는 롤업된 열 2개와 같습니다. 이 옵션을 다수의 열에 적용하면 실행 시간 또는 데이터 세트가 매우 길어질 수 있습니다.

고급 예시

이전 예시와 입력 데이터가 동일하지만 국가별 집계를 포함한다고 가정해 보겠습니다.

date,country,age_group,disease_cases
01/2000,US,old,102030
01/2000,MX,old,192939
01/2000,total,old,152012
01/2000,US,young,23131
01/2000,MX,young,12311
01/2000,total,young,241011
02/2000,US,old,143135
02/2000,MX,old,203131
02/2000,total,old,211310
02/2000,US,young,22990
02/2000,MX,young,12591
02/2000,total,young,240131

예를 들어 방법론의 차이 또는 목록에 열거되지 않은 다른 국가의 존재 때문에 각 연령대의 총계가 국가 값의 합계와 일치하지 않을 수 있습니다.

이제 다음과 같은 추가 기능이 있는 DSPL 데이터 세트를 만들어 보겠습니다.

  1. 국가를 '롤업'하여 연령대별로 총 감염자 수를 합산합니다.
  2. country 열에 표준 geo:country 개념을 사용하면 전체 이름, 위치 등을 자동으로 가져올 수 있습니다.
  3. disease_cases 개념을 quantity:amount로 확장하여 XML 파일에 단위 정보를 수동으로 추가할 수 있도록 합니다.

이를 위해 다음과 같이 입력 CSV의 헤더 행을 수정합니다.

date,country[concept=geo:country;rollup=true;total_val=total],age_group,disease_cases[extends=quantity:amount]

이 도구를 다시 실행하면 추가 슬라이스 테이블이 생성되어 국가별 구분이 해제됩니다.

date,age_group,disease_cases
01/2000,old,152012
02/2000,old,211310
01/2000,young,241011
02/2000,young,240131

소스 테이블에 총 값과 total_val 태그를 포함하지 않았다면 각 연령대의 계산된 합계를 얻게 됩니다.

또한 이제 XML 파일의 disease_cases 정의에 필요에 따라 quantity:amount의 확장 프로그램이 포함됩니다. 이 대신 가져온 개념을 사용하므로 country의 정의가 XML 파일에서 삭제되었습니다.

다양한 이름, 설명, 단위 정보를 입력한 후 데이터 세트 번들을 압축하고 공개 데이터 탐색기에 업로드하여 시각화할 수 있습니다.