Associaties tussen logische tabellen

Een database kan vele tabellen bevatten. Elke tabel kan worden opgevat als een lijst van iets; elke record in de lijst vertegenwoordigt een exemplaar van een object van een bepaald type.

Example:  

Als twee tabellen lijsten zijn van verschillende zaken, bijvoorbeeld een lijst met klanten en een lijst met facturen, en in beide tabellen komt een gemeenschappelijk veld voor, bijvoorbeeld het klantnummer, betekent dit meestal dat er een relatie bestaat tussen de twee tabellen. In gangbare SQL-queryprogramma's moeten de twee tabellen vrijwel altijd worden gekoppeld.

De tabellen die in het QlikView-script zijn gedefinieerd, worden logische tabellen genoemd. QlikView zorgt via de veldnamen voor associaties tussen de tabellen en voert de joins (koppelingen) uit bij het maken van een selectie, bijvoorbeeld de selectie van een veldwaarde in een keuzelijst.

Dit betekent dat een associatie nagenoeg overeenkomt met een join. Het enige verschil is dat de join wordt uitgevoerd bij het uitvoeren van het script, waarbij de logische tabel gewoonlijk het resultaat is van de join. De associatie vindt plaats nadat de logische tabel is gemaakt. Associaties vinden altijd plaats tussen logische tabellen.

Vier tabellen: een lijst met landen, een lijst met klanten, een lijst met transacties en een lijst met lidmaatschappen, met elkaar geassocieerd via de velden Country en CustomerID.

QlikView-associatie vergeleken met natuurlijke outer join in SQL

Een QlikView-associatie lijkt op een natuurlijke outer join in SQL. De associatie is echter meer algemeen: een outer join in SQL is meestal een eenzijdige projectie van een tabel op een andere tabel. Een associatie resulteert altijd in een volledige (bidirectionele) natuurlijke outer join.

Frequentie-informatie in gemeenschappelijke velden

Het gebruik van gemeenschappelijke velden binnen twee of meer tabellen is gebonden aan enkele beperkingen. Wanneer een veld voorkomt in meer dan één tabel, kan QlikView niet bepalen welke tabel moet worden gebruikt voor de berekening van gegevensfrequenties.

QlikView analyseert de gegevens om te zien of er een eenduidige manier is om vast te stellen welke tabel de hoofdtabel is (die er soms is), maar in de meeste gevallen kan alleen maar worden geraden. Het programma is zo ontworpen dat bepaalde handelingen niet zijn toegestaan als de interpretatie van gegevens dubbelzinnig is voor gemeenschappelijke velden, omdat onjuist raden kan leiden tot fatale fouten (QlikView lijkt dan een berekeningsfout te maken).

Beperkingen bij het associëren van velden

  1. U kunt geen frequentie-informatie weergeven in een keuzelijst met het veld weergegeven.
  2. Statistiekobjecten voor het veld tonen n.v.t. voor de meeste statistische entiteiten.
  3. In grafieken kunnen geen uitdrukkingen worden gemaakt met functies die afhankelijk zijn van frequentie-informatie (zoals de functies Sum, Count en Average) voor het veld, tenzij de modificatie Distinct is geactiveerd. Telkens bij het opnieuw laden scant QlikView alle grafiekuitdrukkingen op dubbelzinnigheden als gevolg van wijzigingen in gegevensstructuren. Als dubbelzinnige uitdrukkingen worden aangetroffen, verschijnt er een foutbericht en wordt de uitdrukking uitgeschakeld. U kunt de uitdrukking pas weer inschakelen als het probleem is opgelost. Als een logbestand is ingeschakeld, worden alle dubbelzinnige uitdrukkingen daarin vermeld.

Tijdelijke oplossing

Er is een eenvoudige manier om deze beperkingen te omzeilen. Laad het veld nog een keer onder een andere naam uit de tabel waarin u de frequentie wilt tellen. Gebruik dit nieuwe veld voor een keuzelijst met frequentie, voor een statistiekobject of voor berekeningen in de grafieken.