Skapa en Direct Query-app med anpassad SQL
Skapa datamodeller i laddningsskriptet med en anpassad SQL-fråga i din Direct Query-app. Anpassad SQL tillhandahåller ett alternativ till att använda Hanterare för datamodell för att definiera din datamodell för Direct Query.
Genom att använda anpassad SQL för att skapa Direct Query-datamodeller kan du använda SQL-satser för att definiera tabeller och fält som genereras av själva SQL-frågan. Dessutom kan anpassade SQL-satser i en Qlik-app använda laddningsskriptvariabler och Qlik-uttrycksmakron i dina anpassade SQL-satser. Detta möjliggör en mer dynamisk datamodell och gör det möjligt att justera dina anpassade SQL-definierade tabeller och kolumner efter utvärderingsresultat från variabler eller uttryck.
Anpassad SQL kan användas självständigt i ditt laddningsskript. Du kan också använda en kombination av Hanterare för datamodell och anpassad SQL i Skriptredigeraren när du definierar din datamodell.
Om delar av datamodellen kan anges med Hanterare för datamodell använder du Hanterare för datamodell för att ange de delarna för att optimera SQL-prestandan. Hanterare för datamodell är mer effektivt för tabelldefinitioner som används när Direct Query-frågor körs i den definierade datamodellen.
För att skapa datamodeller med anpassad SQL:
-
Lägg till section directquery i laddningsskriptet.
Det kan bara finnas ett SECTION DIRECTQUERY-avsnitt i laddningsskriptet. Avsnittet måste finnas i det sista avsnittet i ett laddningsskript.
Även om du inte har definierat en datamodell med Hanterare för datamodell kommer din app att omvandlas till en Direct Query-app om du lägger till en LIB CONNECT-sats och därefter en section directquery-sats i ditt laddningsskript och sedan laddar skriptet.
-
Bygg din datamodell med följande satser:
-
SELECT
Använd SELECT-satser för att välja vilka tabeller och kolumner som ska laddas. Till exempel: <TableName> SELECT <custom SQL>.
Om du inte definierar dina egna tabellnamn i laddningsskriptet kommer tabeller att döpas till Table<skript rad nummer>.
-
CREATE RELATIONSHIP
Använd CREATE RELATIONSHIP för att definiera relationer mellan fält och tabeller i datamodellen.
-
DROP RELATIONSHIP
Använd DROP RELATIONSHIP för att ta bort tidigare definierade relationer från datamodellen.
-
DROP TABLE
Använd DROP TABLE för att ta bort tidigare definierade tabeller från datamodellen så att eventuella konflikter mellan tabeller undviks.
-
LET, SET
Använd LET och SET-satser för att definiera variabler eller Qlik-uttryck.
Tabeller och fält måste ha unika namn i hela din datamodell. Om du definierar en tabell i Hanterare för datamodell och sedan försöker definiera om tabellen i anpassad SQL kommer den inte att fungera såvida inte du antingen tar bort tabellen som skapats i Hanterare för datamodell eller byter namn på tabellen och fälten i din anpassade SQL.
-
Alla skriptsatser som inte stöds i section directquery-avsnittet genererar ett fel när data laddas. Alla inställningar för felsökning av skript eller tvingad fortsättning ignoreras.
Exempel på laddningsskript med anpassad SQL finns i Exempel på anpassad SQL för Direct Query..
Anpassad SQL, variabler och uttryck
Med definitioner i anpassad SQL i Direct Query kan du använda både skriptvariabler och Qlik-uttrycksmakron i en anpassad SQL-sats.
Med den här funktioner får du dynamisk variabel- och uttryckspåverkan och flexibilitet i en apps datamodell med anpassad SQL-definierade tabeller och kolumner som justeras efter resultat från utvärdering av variabler eller Qlik-uttryck.
Variabler i anpassad SQL
Använda SET- eller LET-satser för att definiera dina variabler. Lägg till variabler i ditt laddningsskript med hjälp av formatet $(<variable name>).
Exempel: konstruera en datamodell inklusive variabler
Variabelreferenser i anpassad SQL utvärderas vid tidpunkten för laddning. Om variabelvärdet ändras när appen används kommer ändringen inte att återspeglas i den anpassade SQL som använder den variabeln såvida inte en skriptladdning utförs.
Om du vill använda dynamiska variabler i anpassade SQL-definitioner ska du referera variabler som delar av Qlik-uttryck för att tvinga de här variablerna att utvärderas vid varje körning av frågor som använder de här anpassade SQL-definitionerna.
Mer information om variabler finns i Arbeta med variabler i Skriptredigeraren
Uttryck i anpassad SQL
Du kan använda uttryck för att modifiera innehållet i anpassad SQL som skickas till fjärrdatabasen för att representera tabeller och kolumner i appdatamodellen. Uttryck som används i datamodellen måste utvärderas till ett enda uttryck.
För att testa om ditt uttryck utvärderas till ett enda värde lägger du till det som ett uttryck i ett KPI. Om det fungerar kan du använda uttrycket i din anpassade SQL.
Uttryck utvärderas dynamiskt vid varje körning av en fråga där dessa SQL-definitioner används. Varje gång en anpassad SQL-sats med tabeller eller fält använder Qlik-uttryck vid körning av en fråga utvärderas de här Qlik-uttrycken först och hämtar de aktuella resultaten av uttrycken. De här resultaten infogas i den anpassade SQL-satsen och körs på uppdrag av den ursprungliga frågan. Det är möjligt att de här utvärderingarna av Qlik-uttryck i sin tur kan generera SQL-frågor till fjärrdatabasen. Det är möjligt att de här utvärderingarna av Qlik-uttryck i sin tur kan generera SQL-frågor till fjärrdatabasen.
Om ett uttryck inte kan expanderas under laddning kommer den att returnera ett nullvärde. Det betyder inte att ditt uttryck är ogiltigt. En användare kan behöva göra urval i en app för att ditt uttryck ska utvärderas.
Exempel: konstruera en datamodell med Qlik-uttryck
Skapa en datamodell med anpassad SQL och Hanterare för datamodell.
Du kan använda en kombination av anpassad SQL och Hanterare för datamodell för att skapa din datamodell för Direct Query. Några praktiska bedömningar måste emellertid göras:
-
Ett metodtips är att slutföra all modellering du vill göra i Hanterare för datamodell innan du lägger till anpassad SQL i laddningsskriptet. Anpassad SQL och Hanterare för datamodell användes bäst tillsammans när Hanterare för datamodell används för att definiera de laddade tabellerna och relationerna mellan fält och anpassad SQL används för ytterligare anpassningar.
-
Den andel av datamodellen som skapas av Hanterare för datamodell och den andel som skapas av anpassad SQL hanteras separat och kombineras sedan med skriptladdningen. Hanterare för datamodell visar inte någonting av datamodellen som definieras med anpassad SQL. För att visa din fullständiga datamodell använder du Datamodellvyn.
-
Datamodellen som skapats av Hanterare för datamodell och datamodellen som definierats med din anpassade SQL måste använda samma databaskoppling.
-
Du kan flytta IMPORT LIVE-satsen som lagts till i ditt laddningsskript av Hanterare för datamodell. Laddningsskriptet utvärderas sekventiellt, så dess nya position kan påverka dina anpassade SQL-krav. Det kan exempelvis skapa oönskade relationer eller duplicera tabellnamn i den slutliga datamodellen.
-
Tabeller och fält måste ha unika namn i hela din datamodell. Om du definierar en tabell i Hanterare för datamodell och sedan försöker definiera om tabellen i anpassad SQL kommer den inte att fungera såvida inte du antingen tar bort tabellen som skapats i Hanterare för datamodell eller byter namn på tabellen och fälten i din anpassade SQL.
Begränsningar
Anpassade analyser för Direct Queryhar följande begränsningar:
-
Anpassad SQL kan bara använda en enda databas.
-
En Direct Query-app som använder en eller flera SQL-satser med inbäddade Qlik-uttrycksmakron kan inte användas som en urvalsapp för On-Demand-appar. Det beror på att inga genererade mallappar har stöd för Qlik-uttrycksmakron i dess laddningsskript, eftersom de är minnesappar.
-
Direct Query-anpassad SQL stöds inte för skript som lagts till i aktivitetscentret för Analyser. Mer information om skript finns i Arbeta med skript i katalogen.