기본 콘텐츠로 건너뛰기 보완적인 콘텐츠로 건너뛰기

단일 날짜에서 날짜 간격 만들기

시간 간격은 시작 및 끝을 명시적으로 지정하여 저장되지 않는 경우가 있습니다. 대신 하나의 필드(변경 타임스탬프)를 통해 유추됩니다.

아래 테이블에 여러 통화에 대한 환율이 나와 있습니다. 각 환율 변경 내역이 자체 행에 나와 있으며, 각각은 새로운 변환율이 함께 표시되어 있습니다. 또한 테이블에는 첫 번째 변경을 수행하기 전의 초기 전환율에 해당하는 빈 날짜가 포함된 행이 있습니다.

환율
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"라고 하며 끝 날짜는 다음 간격의 시작 날짜로 정의됩니다. 하지만 끝 날짜가 자체 열에 명시적으로 저장되어 있지 않으므로 해당 열을 만들어야 하고 따라서 새 테이블은 간격의 목록이 됩니다.

다음과 같이 하십시오.

  1. 위에 표시된 테이블이 포함된 Rates.xlsx 파일을 만들어 로드 가능하도록 저장합니다.
  2. Change Date 열의 날짜는 현지 날짜 서식과 동일한 서식이어야 합니다.

  3. 작업할 시간 범위를 결정합니다. 범위 시작은 데이터의 첫 번째 날짜 이전이어야 하고 범위 끝은 마지막 날짜 이후여야 합니다.
  4. 소스 데이터를 로드하고 빈 날짜를 이전 항목에서 정의한 범위의 시작 날짜로 변경합니다. 변경 날짜는 "From Date"로 로드해야 합니다.
  5. 먼저 Currency에 따라 테이블을 정렬한 다음, "From Date"에 따라 내림차순으로 정렬하여 최근 날짜가 맨 위에 오도록 합니다.
  6. 데이터에서 "To Date"를 계산하기 위한 두 번째 단계를 실행합니다. 현재 레코드에 이전 레코드와 다른 통화가 있는 경우, 새로운 통화의 첫 번째 레코드(및 마지막 간격)이므로 1단계에서 정의한 범위의 끝 날짜를 사용해야 합니다. 동일한 통화인 경우는 이전 레코드의 “From Date”에서 약간의 시간을 빼고, 이 값을 현재 레코드의 “To 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 스크립트는 다음과 같습니다.

Let vBeginTime = Num('1/1/2013');
Let vEndTime = Num('1/3/2013');
Let vEpsilon = Pow(2,-27);
Tmp_Rates:
LOAD Currency, Rate,
Date(If(IsNum([Change Date]), [Change Date], $(#vBeginTime))) as FromDate
From 'C:\MyFiles\Rates.xlsx'
(ooxml, embedded labels, table is Sheet1);
 
Rates:
LOAD Currency, Rate, FromDate,
Date(If( Currency=Peek(Currency),
Peek(FromDate) - $(#vEpsilon),
$(#vEndTime)
)) as ToDate
Resident Tmp_Rates
Order By Currency, FromDate Desc;
 
Drop Table Tmp_Rates;

 

이 스크립트를 실행하면 테이블의 간격이 정확하게 표시됩니다.

이 테이블은 이후 Intervalmatch 메서드를 사용하여 기존 날짜와 비교하는 데 사용할 수 있습니다.

이 페이지가 도움이 되었습니까?

이 페이지 또는 해당 콘텐츠에서 오타, 누락된 단계 또는 기술적 오류와 같은 문제를 발견하면 개선 방법을 알려 주십시오!

분석 현대화 프로그램에 참여

Remove banner from view

분석 현대화 프로그램으로 귀중한 QlikView 앱을 손상시키지 않고 현대화하십시오. 여기를 클릭 하여 자세한 내용을 참조하거나 다음에 연결하십시오. ampquestions@qlik.com