Nieuwe en bijgewerkte records laden via incrementeel laden

Als uw app een grote hoeveelheid gegevens bevat uit databasebronnen die continu worden bijgewerkt, kan het opnieuw laden van de gehele gegevensverzameling veel tijd kosten. In dit geval wilt u alleen nieuwe of gewijzigde records laden vanuit de database. Alle andere gegevens zouden al beschikbaar moeten zijn in de app. Met incrementeel laden, via QVD-bestanden, kunt u dit voor elkaar krijgen.

Het basisproces wordt hieronder beschreven:

  1. Laad nieuwe of bijgewerkte gegevens vanuit de tabel met databasebronnen.

    Dit is een traag proces, maar er wordt slechts een beperkt aantal records geladen.

  2. Laad gegevens die al beschikbaar zijn in de app vanuit het QVD-bestand.

    Er worden vele records geladen, maar dit is een veel sneller proces.

  3. Een nieuw QVD-bestand maken.

    Dit is het bestand dat u gaat gebruiken wanneer u de volgende keer incrementeel gaat laden.

  4. De procedure wordt voor elke geladen tabel herhaald.

De volgende voorbeelden laten zien wanneer incrementeel laden wordt gebruikt. Mogelijk is echter een complexere oplossing vereist, afhankelijk van de structuur van de brondatabase en de bedrijfsmodus.

  • Alleen toevoegen (meest gebruikt voor logbestanden)
  • Alleen invoegen (niet bijwerken of verwijderen)
  • Invoegen en bijwerken (niet verwijderen)
  • Invoegen, bijwerken en verwijderen

U kunt QVD-bestanden lezen in geoptimaliseerde modus of standaardmodus. (De toegepaste methode wordt automatisch door de Qlik Sense-engine geselecteerd op basis van de complexiteit van de bewerking.) De geoptimaliseerde modus is ongeveer 10 keer sneller dan de standaardmodus en ongeveer 100 keer sneller dan het op de normale wijze laden van de database.

Ga voor meer informatie naar Werken met QVD-bestanden.

Alleen toevoegen

Een logboekbestand, waarbij alleen records worden toegevoegd en nooit verwijderd, is het eenvoudigst. De volgende voorwaarden zijn van toepassing:

  • De database moet een logbestand zijn (of een ander bestand waarbij records worden toegevoegd en niet ingevoegd of verwijderd) dat is opgenomen in een tekstbestand (ODBC, OLE DB of andere databases worden niet ondersteund).

  • Qlik Sense houdt het aantal records bij dat eerder gelezen is en laadt alleen de records die aan het eind van het bestand zijn toegevoegd.

Example:  

Buffer (Incremental) Load * From LogFile.txt (ansi, txt, delimiter is '\t', embedded labels);

Alleen invoegen (niet bijwerken of verwijderen)

De volgende voorwaarden zijn van toepassing:

  • De gegevensbron kan elke willekeurige database zijn.

  • Qlik Sense laadt de records die na de laatste scriptuitvoering zijn ingevoegd.

  • Er is een veld ModificationTime (of soortgelijk) vereist, waaraan Qlik Sense kan herkennen welke records nieuw zijn.

Example:  

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#

AND ModificationTime < #$(BeginningThisExecTime)#;

 

Concatenate LOAD PrimaryKey, X, Y FROM File.QVD;

STORE QV_Table INTO File.QVD;

De hekjes in de SQL WHERE-clausule definiëren het begin en einde van een datum. Controleer de handleiding bij uw database voor de correcte datumsyntaxis voor uw database.

Invoegen en bijwerken (niet verwijderen)

De volgende situatie is van toepassing wanneer gegevens in eerder geladen records tussen twee scriptuitvoeringen gewijzigd kunnen zijn. De volgende voorwaarden zijn van toepassing:

  • De gegevensbron kan elke willekeurige database zijn.

  • Qlik Sense laadt de records die na de laatste scriptuitvoering in de database zijn ingevoegd of gewijzigd.

  • Er is een veld ModificationTime (of soortgelijk) vereist, waaraan Qlik Sense kan herkennen welke records nieuw zijn.

  • Er is een primair sleutelveld vereist, waaraan Qlik Sense kan zien welke records in het QVD-bestand gewijzigd zijn.

  • Het lezen van het QVD-bestand moet in de standaardmodus worden uitgevoerd (in plaats van de geoptimaliseerde modus), wat nog altijd aanzienlijk sneller gaat dan het laden van de volledige database.

Example:  

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#;

 

Concatenate LOAD PrimaryKey, X, Y FROM File.QVD

WHERE NOT Exists(PrimaryKey);

 

STORE QV_Table INTO File.QVD;

Invoegen, bijwerken en verwijderen

De moeilijkste situatie is die waarbij records tussen twee scriptuitvoeringen uit de brondatabase zijn verwijderd. De volgende voorwaarden zijn van toepassing:

  • De gegevensbron kan elke willekeurige database zijn.

  • Qlik Sense laadt de records die na de laatste scriptuitvoering in de database zijn ingevoegd of gewijzigd.

  • Qlik Sense verwijdert de records die na de laatste scriptuitvoering zijn verwijderd.

  • Er is een veld ModificationTime (of soortgelijk) vereist, waaraan Qlik Sense kan herkennen welke records nieuw zijn.

  • Er is een primair sleutelveld vereist, waaraan Qlik Sense kan zien welke records in het QVD-bestand gewijzigd zijn.

  • Het lezen van het QVD-bestand moet in de standaardmodus worden uitgevoerd (in plaats van de geoptimaliseerde modus), wat nog altijd aanzienlijk sneller gaat dan het laden van de volledige database.

Example:  

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 File.QVD

WHERE NOT EXISTS(PrimaryKey);

 

Inner Join SQL SELECT PrimaryKey FROM DB_TABLE;

 

If ScriptErrorCount = 0 then

STORE QV_Table INTO File.QVD;

Let LastExecTime = ThisExecTime;

End If