Synthetische sleutels

Wanneer twee of meer gegevenstabellen twee of meer velden gemeenschappelijk hebben, wijst dit op een samengestelde-sleutelrelatie. In Qlik Sense worden deze afgehandeld door automatisch synthetische sleutels te maken. Deze sleutels zijn anonieme velden die alle voorkomende combinaties van de samengestelde sleutel vertegenwoordigen.

Als u een waarschuwing ontvangt over synthetische sleutels bij het laden van gegevens, wordt aanbevolen om de gegevensstructuur te controleren in de gegevensmodelviewer. U moet uzelf afvragen of het gegevensmodel al dan niet correct is. Soms is dat wel het geval, maar vaak ook wordt de synthetische sleutel veroorzaakt door een fout in het script.

Meerdere synthetische sleutels zijn vaak een symptoom van een onjuist gegevensmodel, maar niet altijd. Als u echter synthetische sleutels hebt die zijn gebaseerd op andere synthetische sleutels wijst dat duidelijk op een onjuist gegevensmodel.

Waarschuwing: Als het aantal synthetische sleutels toeneemt, afhankelijk van de hoeveelheid gegevens, tabelstructuur en andere factoren, gaat Qlik Sense hier al dan niet op elegante wijze mee om en wordt mogelijk buitensporig veel tijd en/of geheugen verspild. In een dergelijk geval moet u uw script bewerken en alle synthetische sleutels verwijderen.
Drie tabellen gekoppeld aan synthetische sleutel $Syn 1.

Three tables associated with a synthetic key.

Omgaan met synthetische sleutels

Als u synthetische sleutels moet vermijden, kunt u dit op een aantal verschillende manieren oplossen in het script voor het laden van gegevens:

  • Controleer of alleen velden waarmee twee tabellen logisch worden gekoppeld worden gebruikt als sleutels.

    • Velden als "Commentaar", "Opmerking" en "Beschrijving" kunnen in meerdere tabellen voorkomen zonder verband met elkaar te houden en dienen derhalve niet te worden gebruikt als sleutels.
    • Velden als “Datum”, “Bedrijf” en “Naam” bestaat mogelijk in verschillende tabellen en hebben identieke waarden, maar hebben toch verschillende rollen (Besteldatum/Verzenddatum, Klantbedrijf/Leveranciersbedrijf). In dergelijke gevallen mogen zij niet worden gebruikt als sleutels.
  • Zorg ervoor dat geen redundante velden worden gebruikt en dat alleen de noodzakelijke velden zijn verbonden. Als bijvoorbeeld een datum als sleutel wordt gebruikt, zorg er dan voor dat bijvoorbeeld year, month of day_of_month van dezelfde datum uit niet meer dan één interne tabel wordt geladen.

  • Maak zo nodig uw eigen niet-samengestelde sleutels, meestal door tekenreeksen samen te voegen binnen een AutoNumber-scriptfunctie.