이전에 로드한 테이블에서 데이터 로드

이미 로드된 테이블에서 데이터를 로드하고 변환하는 방법은 두 가지가 있습니다.

  • Resident LOAD - 후속 LOAD 문에서 Resident 조건자를 사용하여 새 테이블을 로드하는 경우.
  • 선행 load - 소스를 지정하지 않고 선행 LOAD 또는 SELECT 문에서 로드하는 경우.

Resident 또는 선행 LOAD?

대부분의 경우에는 어느 방법을 사용해도 동일한 결과를 얻을 수 있습니다. 일반적으로 선행 LOAD가 더 빠른 옵션이지만, Resident LOAD를 대신 사용해야 하는 경우도 있습니다.

  • LOAD 문을 처리하기 전에 Order_by 절을 사용하여 레코드를 정렬하려는 경우.
  • 선행 LOAD가 지원되지 않아서 다음 접두사 중 하나를 사용하려는 경우.
    • Crosstable
    • Join
    • Intervalmatch

Resident LOAD

LOAD 문에서 Resident 조건자를 사용하면 이전에 로드한 테이블에서 데이터를 로드할 수 있습니다. 날짜 또는 숫자 값 처리 등과 같이 Qlik Sense 함수를 사용하는 옵션이 없는 SELECT 문으로 로드한 데이터에서 계산을 수행하려는 경우에 유용합니다.

Example:  

이 예에서는 초기 Crosstable LOAD에서 수행할 수 없으므로 Resident 로드 시 날짜 해석이 수행됩니다.

PreBudget: Crosstable (Month, Amount, 1) LOAD Account, Jan, Feb, Mar, … From Budget; Budget: Noconcatenate LOAD Account, Month(Date#(Month,’MMM’)) as Month, Amount Resident PreBudget; Drop Table PreBudget;
팁: Resident를 사용하는 일반적인 경우는 임시 테이블을 사용하여 계산이나 필터링을 수행하려는 경우입니다. 임시 테이블을 사용하는 목적을 달성한 후에는 Drop table 문을 사용하여 제거해야 합니다.

선행 load

선행 load 기능을 사용하면 한 단계로 테이블을 로드할 수 있지만 여러 번의 연속된 변환을 정의해야 합니다. 일반적으로 사용하는 From 또는 Resident 등의 소스 한정자를 지정하지 않고 기본적으로 아래의 LOAD 또는 SELECT 문에서 로드하는 LOAD 문입니다. 이런 방식으로 개수에 관계없이 LOAD 문을 누적할 수 있습니다. 맨 아래의 문을 처음으로 평가한 다음 그 위의 문을 평가하는 방식으로 맨 위의 문이 평가될 때까지 계속 진행됩니다.

Resident를 사용하여 동일한 결과를 얻을 수 있지만 대부분의 경우 선행 LOAD가 훨씬 빠릅니다.

선행 load의 또 다른 장점은 한 곳에서 계산을 유지할 수 있으며, 위에 배치된 LOAD 문에서 재사용할 수 있습니다.

참고: Join, CrosstableIntervalmatch 접두사는 선행 LOAD와 연결하여 사용할 수 없습니다.

Example 1: SELECT 문으로 로드한 데이터 변환

SELECT 문을 사용하여 데이터베이스에서 데이터를 로드하면 Qlik Sense 함수를 사용하여 SELECT 문에서 데이터를 해석할 수 없습니다. 해결책은 LOAD 문을 추가하여 SELECT 문 위에서 데이터 변환을 수행하는 것입니다.

이 예에서는 이전 SELECT 문을 소스로 사용하여, LOAD 문에서 Qlik Sense 함수 Date#을 사용하여 문자열로 저장한 날짜를 해석합니다.

LOAD Date#(OrderDate,’YYYYMMDD’) as OrderDate;
SQL SELECT OrderDate FROM … ;

Example 2: 계산을 재사용하여 스크립트 간소화

이 예의 경우, 스크립트에서 계산을 두 번 이상 사용합니다.

LOAD ..., Age( FromDate + IterNo() – 1, BirthDate ) as Age, Date( FromDate + IterNo() – 1 ) as ReferenceDate Resident Policies While IterNo() <= ToDate - FromDate + 1 ;

첫 번째 단계에서 계산을 도입하면 선행 LOAD의 Age 함수에서 재사용할 수 있습니다.

LOAD ..., ReferenceDate, Age( ReferenceDate, BirthDate ) as Age; LOAD *, Date( FromDate + IterNo() – 1 ) as ReferenceDate Resident Policies While IterNo() <= ToDate - FromDate + 1 ;

See also: