Een Direct Query-app maken met aangepaste SQL
Maak gegevensmodellen in het load-script met een aangepaste SQL-query in uw Direct Query-app. Aangepaste SQL biedt een alternatief voor het gebruik van Gegevensmodelbeheer voor de definitie van uw gegevensmodel voor Direct Query.
Gebruik aangepast SQL om Direct Query-gegevensmodellen te maken, zodat u SQL-instructies kunt gebruiken om tabellen en velden te definiëren die door de SQL-query zelf worden gegenereerd. Daarnaast kunnen aangepaste SQL-instructies in een Qlik-app load-scriptvariabelen en Qlik-uitdrukkingsmacro's gebruiken in uw aangepaste SQL-instructies. Dit maakt een dynamischer gegevensmodel mogelijk en stelt uw aangepaste SQL-gedefinieerde tabellen en kolommen in staat evaluatieresultaten voor variabelen of uitdrukkingen aan te passen.
Aangepaste SQL kan zelfstandig worden gebruikt in uw load-script. U kunt tevens een combinatie gebruiken van Gegevensmodelbeheer en aangepaste SQL in Editor voor laden van gegevens om uw gegevensmodel te definiëren.
Als delen van het gegevensmodel met de Gegevensmodelbeheer kunnen worden gespecificeerd, gebruikt u de Gegevensmodelbeheer om deze delen te specificeren voor optimale SQL-prestaties. Gegevensmodelbeheer is efficiënter bij tabeldefinities voor gebruik tijdens de uitvoer van Direct Query query's in het gedefinieerde gegevensmodel.
Gegevensmodellen maken met aangepaste SQL:
-
Voeg section directquery toe aan uw load-script.
Er kan slechts één SECTION DIRECTQUERY-sectie bestaan in load-script. De sectie moet de laatste sectie van een load-script zijn.
Ook als u geen gegevensmodel met de Gegevensmodelbeheer hebt gedefinieerd, kunt u een LIB CONNECT-instructie en vervolgens een section directquery-instructie aan uw load-script toevoegen. Als u het script vervolgens laadt, wordt uw app omgezet in een Direct Query-app.
-
Bouw uw gegevensmodel op met de volgende instructies:
-
SELECT
Gebruik SELECT-instructies om de tabellen en kolommen te selecteren die moeten worden geladen. Bijvoorbeeld: <TableName> SELECT <custom SQL>.
Als u niet uw eigen tabelnamen in het load-script definieert, worden krijgen de tabellen de naam Table<scriptregelnummer>.
-
CREATE RELATIONSHIP
Gebruik CREATE RELATIONSHIP om in het gegevensmodel relaties tussen velden en tabellen te definiëren.
-
DROP RELATIONSHIP
Gebruik DROP RELATIONSHIP om eerder gedefinieerde relaties uit het gegevensmodel te verwijderen.
-
DROP TABLE
Gebruik DROP TABLE om eerder gedefinieerde tabellen uit het gegevensmodel te verwijderen om mogelijke conflicten tussen tabellen te vermijden.
-
LET, SET
Gebruik LET- en SET-uitdrukkingen om variabelen of Qlik-uitdrukkingen te definiëren.
Tabellen en velden moeten een unieke naam hebben in uw gegevensmodel. Als u een tabel definieert in de Gegevensmodelbeheer en vervolgens probeert de tabel in aangepaste SQL te herdefiniëren, mislukt dat tenzij u de tabel die in Gegevensmodelbeheer is aangemaakt verwijdert, of de naam van de tabel en velden in uw aangepaste SQL aanpast.
-
Alle scriptuitdrukkingen die niet worden ondersteund in de section directquery-sectie genereren een fout tijdens het laden van gegevens. Alle instellingen voor foutopsporing in het script of geforceerd verder laten gaan van het script worden genegeerd.
Zie Voorbeelden van aangepaste SQL voor Direct Query voor voorbeelden van aangepaste SQL-load-scripts.
Aangepaste SQL, variabelen en uitdrukkingen
Aangepaste SQL-definities in Direct Query maken het mogelijk om zowel scriptvariabelen als Qlik-uitdrukkingsmacro's te gebruiken in een aangepaste SQL-instructie.
Deze mogelijkheid biedt het gegevensmodel van een app een dynamische variabele en beïnvloeding en flexibiliteit van uitdrukkingen met aangepaste SQL-gedefinieerde tabellen en kolommen die worden aangepast aan variabele of Qlik-uitdrukkingsevaluatieresultaten.
Variabelen in aangepaste SQL
Gebruik SET- of LET-instructies om uw variabelen te definiëren. Voeg met de volgende indeling $(<variable name>) variabelen toe aan uw load-script.
Voorbeeld: een gegevensmodel met variabelen samenstellen
Variabelereferenties in aangepaste SQL worden geëvalueerd op het moment dat ze opnieuw worden geladen. Als de variabelewaarde gedurende het gebruik van de app verandert, wordt deze wijziging niet weerspiegeld in de aangepaste SQL die die variabele gebruikt, tenzij het script opnieuw wordt geladen.
Als u dynamische variabelen in aangepaste SQL-definities wilt hebben, verwijst u naar variabelen als onderdelen van Qlik-uitdrukkingen om evaluatie van deze variabelen af te dwingen bij de uitvoer van iedere query die gebruikmaakt van deze aangepaste SQL-definities.
Zie Werken met variabelen in de editor voor het laden van gegevens voor meer informatie over variabelen.
Uitdrukkingen in aangepaste SQL
U kunt uitdrukkingen gebruiken om de inhoud van aangepaste SQL te wijzigen die naar de externe database wordt verzonden om tabellen en kolommen in het appgegevensmodel te vertegenwoordigen. Uitdrukkingen die in het gegevensmodel worden gebruikt, moeten resulteren in één waarde.
Om te testen of uw uitdrukking resulteert in één waarde, voegt u deze als een uitdrukking toe aan een KPI. Als dat werkt, kan uw uitdrukking worden gebruikt in uw aangepaste SQL.
Uitdrukkingen worden bij iedere uitgevoerde query die gebruikmaakt van deze SQL-definities dynamisch geëvalueerd. Elke keer dat een aangepaste SQL-instructie van tabellen en velden tijdens de uitvoer van een query gebruikmaakt van Qlik-uitdrukkingen, worden deze Qlik-uitdrukkingen eerst geëvalueerd om de huidige resultaten van de uitdrukkingen op te halen. Deze resultaten worden ingevoegd in de aangepaste SQL-instructie om namens de oorspronkelijke query te worden uitgevoerd. Het is mogelijk dat deze evaluaties van Qlik-uitdrukkingen SQL-query's genereren naar de externe database. Het is mogelijk dat deze evaluaties van Qlik-uitdrukkingen SQL-query's genereren naar de externe database.
Als een uitdrukking niet kan worden uitgevouwen, retourneert deze een null-waarde. Dat betekent niet dat uw uitdrukking ongeldig is. Uw uitdrukking kan vereisen dat een gebruiker selecties in een app maakt om te evalueren.
Voorbeeld: een gegevensmodel met Qlik-uitdrukkingen opstellen
Een gegevensmodel maken met aangepaste SQL en Gegevensmodelbeheer
U kunt een combinatie gebruiken van aangepaste SQL en Gegevensmodelbeheer om uw gegevensmodel voor Direct Query te definiëren. Maar er zijn een paar praktische overwegingen:
-
Een aanbevolen procedure is om modellen die u nodig hebt in Gegevensmodelbeheer te maken voordat u aangepaste SQL toevoegt aan het load-script. Aangepaste SQL en Gegevensmodelbeheer kunnen het beste samen worden gebruikt wanneer Gegevensmodelbeheer wordt gebruikt om de geladen tabellen en relaties tussen velden te definiëren en aangepaste SQL wordt gebruikt voor extra aanpassingen.
-
Het deel van het gegevensmodel dat wordt gemaakt door Gegevensmodelbeheer en het deel dat wordt gemaakt door aangepaste SQL worden afzonderlijk beheerd en vervolgens samengevoegd wanneer het script opnieuw wordt geladen. Gegevensmodelbeheer geeft niks weer van het gegevensmodel dat door aangepaste SQL is gedefinieerd. Om uw volledige gegevensmodel weer te geven gebruikt u Gegevensmodelviewer.
-
Het gegevensmodel dat is gemaakt door Gegevensmodelbeheer en het gegevensmodel dat is gedefinieerd door uw aangepaste SQL moeten dezelfde databaseverbinding gebruiken.
-
U kunt de IMPORT LIVE-instructie die door Gegevensmodelbeheer is toegevoegd aan uw load-script, verplaatsen. Het load-script wordt is sequentieel geëvalueerd. Dat betekent dat de nieuwe positie mogelijk impact heeft op de vereisten voor uw aangepaste SQL. Bijvoorbeeld: het zou ongewenste relaties of dubbele tabelnamen in het definitieve gegevensmodel kunnen aanmaken.
-
Tabellen en velden moeten een unieke naam hebben in uw gegevensmodel. Als u een tabel definieert in de Gegevensmodelbeheer en vervolgens probeert de tabel in aangepaste SQL te herdefiniëren, mislukt dat tenzij u de tabel die in Gegevensmodelbeheer is aangemaakt verwijdert, of de naam van de tabel en velden in uw aangepaste SQL aanpast.
Beperkingen
Aangepaste SQL voor Direct Query heeft de volgende beperkingen:
-
Aangepaste SQL kan slechts één database gebruiken.
-
Een Direct Query-app die één of meer aangepaste SQL-instructies gebruikt met geïntegreerde Qlik-uitdrukkingsmacro's kan niet worden gebruikt als een selectie-app voor On-demand-apps. Dit komt doordat een gegenereerde sjabloonapp een app in het geheugen is en geen ondersteuning biedt voor Qlik-uitdrukkingsmacro's in het load-script.
-
Direct Query aangepaste SQL wordt niet ondersteund voor scripts die zijn toegevoegd in het Analyse-activiteitencentrum. Voor meer informatie over scripts gaat u naar Werken met scripts in de catalogus.