단일 날짜에서 날짜 간격 만들기
시간 간격은 시작 및 끝을 명시적으로 지정하여 저장되지 않는 경우가 있습니다. 대신 하나의 필드(변경 타임스탬프)를 통해 유추됩니다.
아래 테이블에 여러 통화에 대한 환율이 나와 있습니다. 각 환율 변경 내역이 자체 행에 나와 있으며, 각각은 새로운 변환율이 함께 표시되어 있습니다. 또한 테이블에는 첫 번째 변경을 수행하기 전의 초기 전환율에 해당하는 빈 날짜가 포함된 행이 있습니다.
Currency | 변경 날짜 | Rate |
---|---|---|
EUR | - | 8.59 |
EUR | 28/01/2013 | 8.69 |
EUR | 15/02/2013 | 8.45 |
USD | - | 6.50 |
USD | 10/01/2013 | 6.56 |
USD | 03/02/2013 | 6.30 |
이 테이블은 일련의 겹치지 않는 간격을 정의합니다. 여기서 시작 날짜는 "Change Date"라고 하며 끝 날짜는 다음 간격의 시작 날짜로 정의됩니다. 하지만 끝 날짜가 자체 열에 명시적으로 저장되어 있지 않으므로 해당 열을 만들어야 하고 따라서 새 테이블은 간격의 목록이 됩니다.
다음과 같이 하십시오.
- 위에 표시된 테이블이 포함된 Rates.xlsx 파일을 만들어 로드 가능하도록 저장합니다.
- 작업할 시간 범위를 결정합니다. 범위 시작은 데이터의 첫 번째 날짜 이전이어야 하고 범위 끝은 마지막 날짜 이후여야 합니다.
- 소스 데이터를 로드하고 빈 날짜를 이전 항목에서 정의한 범위의 시작 날짜로 변경합니다. 변경 날짜는 "From Date"로 로드해야 합니다.
- 먼저 Currency에 따라 테이블을 정렬한 다음, "From Date"에 따라 내림차순으로 정렬하여 최근 날짜가 맨 위에 오도록 합니다.
- 데이터에서 "To Date"를 계산하기 위한 두 번째 단계를 실행합니다. 현재 레코드에 이전 레코드와 다른 통화가 있는 경우, 새로운 통화의 첫 번째 레코드(및 마지막 간격)이므로 1단계에서 정의한 범위의 끝 날짜를 사용해야 합니다. 동일한 통화인 경우는 이전 레코드의 “From Date”에서 약간의 시간을 빼고, 이 값을 현재 레코드의 “To Date”로 사용해야 합니다.
Change Date 열의 날짜는 현지 날짜 서식과 동일한 서식이어야 합니다.
아래에 나온 스크립트는 다음과 같은 방식으로 소스 테이블을 업데이트합니다.
Currency | Rate | FromDate | ToDate |
---|---|---|---|
EUR | 8.45 | 15/02/2013 | vEndTime |
EUR | 8.69 | 28/01/2013 | 14/02/2013 23:59:59 |
EUR | 8.59 | vBeginTime | 28/01/2013 23:59:59 |
USD | 6.30 | 03/02/2013 | vEndTime |
USD | 6.56 | 10/01/2013 | 2/02/2013 23:59:59 |
USD | 6.50 | vBeginTime | 9/01/2013 23:59:59 |
QlikView 스크립트는 다음과 같습니다.
이 스크립트를 실행하면 테이블의 간격이 정확하게 표시됩니다.
이 테이블은 이후 Intervalmatch 메서드를 사용하여 기존 날짜와 비교하는 데 사용할 수 있습니다.