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

증분 로드를 통해 새 레코드 및 업데이트된 레코드 로드

응용 프로그램에 지속적으로 업데이트되는 데이터베이스 소스의 데이터가 대량으로 포함된 경우 전체 데이터 집합을 다시 로드하려면 시간이 오래 걸릴 수 있습니다. 이 경우 데이터베이스에서 새 레코드 또는 변경된 레코드를 로드할 수 있습니다. 다른 모든 데이터는 이미 응용 프로그램에서 사용할 수 있어야 합니다. QVD 파일을 사용하는 증분 로드를 통해 이 작업을 수행할 수 있습니다.

기본 프로세스는 아래의 설명과 같습니다.

  1. 데이터베이스 소스 테이블에서 새 데이터나 업데이트된 데이터를 로드합니다.

    느린 프로세스이지만 제한된 수의 레코드만 로드됩니다.

  2. 응용 프로그램에서 이미 사용할 수 있는 데이터를 QVD 파일에서 로드합니다.

    많은 수의 레코드가 로드되지만 훨씬 빠른 프로세스입니다.

  3. 새로운 QVD 파일을 만듭니다.

    다음 번에 증분 로드를 수행할 때 이 파일을 사용합니다.

  4. 로드된 모든 테이블에 대해 이 절차를 반복합니다.

다음 예에는 증분 로드가 사용되는 사례가 나와 있습니다. 하지만 소스 데이터베이스 구조와 작업 모드에 따라 좀더 복잡한 솔루션이 필요할 수 있습니다.

  • 삽입만(업데이트 또는 삭제는 제외)
  • 삽입 및 업데이트(삭제는 제외)
  • 삽입, 업데이트 및 삭제

최적화 모드 또는 표준 모드에서 QVD 파일을 읽을 수 있습니다. (사용되는 방법은 작업의 복잡성에 따라 Qlik Sense 엔진에 의해 자동으로 선택됩니다.) 최적화 모드는 표준 모드보다 약 10배 빠르거나 데이터베이스를 일반적인 방식으로 로드하는 것보다 약 100배 빠릅니다.

자세한 내용은 QVD 파일 작업을 참조하십시오.

삽입만(업데이트 또는 삭제는 제외)

데이터가 단순한 로그 파일이 아닌 데이터베이스에 존재하는 경우 추가 방식은 효과가 없습니다. 하지만 최소한의 추가 작업으로 문제를 해결할 수 있습니다. 다음 조건이 적용됩니다.

  • 데이터 소스는 모든 데이터베이스일 수 있습니다.

  • Qlik Sense에서 마지막 스크립트 실행 후 데이터베이스에 삽입된 레코드를 로드합니다.

  • Qlik Sense에서 새 레코드 여부를 인식하려면 ModificationTime 필드(또는 유사한 필드)가 필요합니다.

 

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#

AND ModificationTime < #$(BeginningThisExecTime)#;

 

Concatenate LOAD PrimaryKey, X, Y FROM [lib://DataFiles/File.QVD];

STORE QV_Table INTO [lib://DataFiles/File.QVD];

 

SQL WHERE 절에서 해시 기호는 날짜의 시작과 끝을 정의합니다. 사용 중인 데이터베이스의 올바른 날짜 구문은 데이터베이스 설명서에서 확인하십시오.

삽입 및 업데이트(삭제는 제외)

다음 사례는 이전에 로드된 레코드의 데이터가 스크립트 실행 도중 변경된 경우 적용할 수 있습니다. 다음 조건이 적용됩니다.

  • 데이터 소스는 모든 데이터베이스일 수 있습니다.

  • Qlik Sense에서 마지막 스크립트 실행 후 데이터베이스에 삽입되거나 데이터베이스에서 업데이트된 레코드를 로드합니다.

  • Qlik Sense에서 새 레코드 여부를 인식하려면 ModificationTime 필드(또는 유사한 필드)가 필요합니다.

  • Qlik Sense에서 QVD 파일의 업데이트된 레코드를 정렬하려면 기본 키 필드가 필요합니다.

  • 이 솔루션은 QVD 파일을 최적화 모드보다는 표준 모드에서 읽습니다. 그래도 전체 데이터베이스를 로드하는 것보다 속도가 상당히 빠릅니다.

 

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#;

 

Concatenate LOAD PrimaryKey, X, Y FROM [lib://DataFiles/File.QVD]

WHERE NOT Exists(PrimaryKey);

 

STORE QV_Table INTO [lib://DataFiles/File.QVD];

삽입, 업데이트 및 삭제

처리가 가장 어려운 사례는 스크립트 실행 도중 레코드가 실제로 소스 데이터베이스에서 삭제되는 경우입니다. 다음 조건이 적용됩니다.

  • 데이터 소스는 모든 데이터베이스일 수 있습니다.

  • Qlik Sense에서 마지막 스크립트 실행 후 데이터베이스에 삽입되거나 데이터베이스에서 업데이트된 레코드를 로드합니다.

  • Qlik Sense에서 마지막 스크립트 실행 후 데이터베이스에서 삭제된 레코드를 제거합니다.

  • Qlik Sense에서 새 레코드 여부를 인식하려면 ModificationTime 필드(또는 유사한 필드)가 필요합니다.

  • Qlik Sense에서 QVD 파일의 업데이트된 레코드를 정렬하려면 기본 키 필드가 필요합니다.

  • 이 솔루션은 QVD 파일을 최적화 모드보다는 표준 모드에서 읽습니다. 그래도 전체 데이터베이스를 로드하는 것보다 속도가 상당히 빠릅니다.

 

Let ThisExecTime = Now( );

 

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#

AND ModificationTime < #$(ThisExecTime)#;

 

Concatenate LOAD PrimaryKey, X, Y FROM [lib://DataFiles/File.QVD]

WHERE NOT EXISTS(PrimaryKey);

 

Inner Join SQL SELECT PrimaryKey FROM DB_TABLE;

 

If ScriptErrorCount = 0 then

STORE QV_Table INTO [lib://DataFiles/File.QVD];

Let LastExecTime = ThisExecTime;

End If

자세한 정보

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

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