Erstellen einer Direct Query App mit benutzerdefinierter SQL
Erstellen Sie Datenmodelle im Ladeskript mit einer benutzerdefinierten SQL-Abfrage in Ihrer Direct Query App. Benutzerdefinierte SQL ist eine Alternative für die Verwendung von Datenmodell-Manager zum Definieren Ihres Datenmodells für Direct Query.
Wenn Sie benutzerdefinierte SQL zum Erstellen von Direct Query Datenmodellen verwenden, können Sie SQL-Anweisungen zum Definieren von Tabellen und Feldern verwenden, die von der SQL-Abfrage selbst generiert werden. Zudem können Ihre benutzerdefinierten SQL-Anweisungen in einer Qlik App Ladeskriptvariablen und Qlik Formelmakros verwenden. Das ergibt ein dynamischeres Datenmodell, und Ihre mit benutzerdefinierter SQL definierten Tabellen und Spalten lassen sich an die Auswertungsergebnisse von Variablen oder Formeln anpassen.
Benutzerdefinierte SQL kann im Ladeskript für sich allein verwendet werden. Sie können auch eine Kombination aus Datenmodell-Manager und benutzerdefinierter SQL in Dateneditor nutzen, um Ihr Datenmodell zu definieren.
Wenn Teile des Datenmodells mit Datenmodell-Manager angegeben werden können, verwenden Sie Datenmodell-Manager, um diese Teile anzugeben und die SQL-Leistung zu optimieren. Datenmodell-Manager ist bei der Verwendung mit Tabellendefinitionen effizienter, wenn Direct Query Abfragen im definierten Datenmodell ausgeführt werden.
So erstellen Sie Datenmodelle mit benutzerdefinierter SQL:
-
Fügen Sie section directquery zu Ihrem Ladeskript hinzu.
Nur ein Abschnitt SECTION DIRECTQUERY kann im Ladeskript vorhanden sein. Der Abschnitt muss der letzte Abschnitt in einem Ladeskript sein.
Auch wenn Sie noch kein Datenmodell mit Datenmodell-Manager definiert haben, wird Ihre App zu einer Direct Query-App, wenn Sie einen Befehl LIB CONNECT gefolgt von einem Befehl section directquery zu Ihrem Ladeskript hinzufügen und dann das Skript laden.
-
Erstellen Sie Ihr Datenmodell mit den folgenden Befehlen:
-
SELECT
Verwenden Sie SELECT-Befehle, um die zu ladenden Tabellen und Spalten auszuwählen. Hier ein Beispiel: <TableName> SELECT <custom SQL>.
Wenn Sie nicht Ihre eigenen Tabellennamen im Ladeskript definieren, werden die Tabellen Table<Skriptzeilennummer> genannt.
-
CREATE RELATIONSHIP
Verwenden Sie CREATE RELATIONSHIP, um Beziehungen zwischen Feldern und Tabellen im Datenmodell zu definieren.
-
DROP RELATIONSHIP
Verwenden Sie DROP RELATIONSHIP, um zuvor definierte Beziehungen aus dem Datenmodell zu entfernen.
-
DROP TABLE
Verwenden Sie DROP TABLE , um zuvor definierte Tabellen aus dem Datenmodell zu entfernen, um mögliche Konflikte zwischen Tabellen zu verhindern.
-
LET, SET
Verwenden Sie LET- und SET-Befehle, um Variablen oder Qlik Formeln zu definieren.
Tabellen und Felder müssen im ganzen Datenmodell eindeutig benannt werden. Wenn Sie eine Tabelle im Datenmodell-Manager definieren und dann versuchen, die Tabelle in benutzerdefinierter SQL neu zu definieren, schlägt der Vorgang fehl, es sei denn, Sie entfernen entweder die in Datenmodell-Manager erstellte Tabelle, oder Sie benennen die Tabelle und die Felder in Ihre benutzerdefinierte SQL um.
-
Alle nicht unterstützten Skriptbefehle im Abschnitt section directquery führen zu einem Fehler, wenn Daten geladen werden. Alle Einstellungen für Skript-Debugging oder erzwungene Fortsetzung werden ignoriert.
Beispiele für benutzerdefinierte SQL-Ladeskripte finden Sie unter Beispiele für benutzerdefinierte SQL für Direct Query.
Benutzerdefinierte SQL, Variablen und Formeln
Benutzerdefinierte SQL-Definitionen in Direct Query ermöglichen es Ihnen, sowohl Skriptvariablen als auch Qlik Formelmakros innerhalb einer benutzerdefinierten SQL-Anweisung zu verwenden.
Dank dieser Möglichkeit kann das Datenmodell einer App dynamisch und flexibel mit Variablen und Formeln angereichert werden. Dabei werden mit benutzerdefinierter SQL definierte Tabellen und Spalten entsprechend der Auswertung der Variablen oder Qlik Formel angepasst.
Variablen in benutzerdefinierter SQL
Verwenden Sie SET- oder LET-Befehle, um Ihre Variablen zu definieren. Fügen Sie Variablen in Ihrem Ladeskript im Format $(<variable name>) hinzu.
Beispiel: Erstellen eines Datenmodells mit Variablen
Variablenreferenzen in benutzerdefinierter SQL werden beim erneuten Laden ausgewertet. Wenn sich der Variablenwert während der Verwendung der App ändert, wird die Änderung nicht in der benutzerdefinierten SQL, die diese Variable verwendet, übernommen, es sei denn, das Skript wird neu geladen.
Wenn Sie dynamische Variablen in benutzerdefinierten SQL-Definitionen verwenden möchten, referenzieren Sie Variablen als Teile der Qlik Formeln, um die Auswertung dieser Variablen bei jeder Abfrageausführung, die diese benutzerdefinierten SQL-Formeln verwendet, zu erzwingen.
Weitere Informationen zu Variablen finden Sie unter Arbeiten mit Variablen im Dateneditor.
Formeln in benutzerdefinierter SQL
Sie können Formeln verwenden, um den Inhalt der benutzerdefinierten SQL zu verändern, die an die Remote-Datenbank gesendet wird, um Tabellen und Spalten im App-Datenmodell darzustellen. Im Datenmodell verwendete Formeln müssen einen einzelnen Wert ergeben.
Um zu prüfen, ob Ihre Formel einen einzelnen Wert ergibt, fügen Sie sie als Formel zu einem KPI hinzu. Wenn sie funktioniert, kann Ihre Formel in Ihrer benutzerdefinierten SQL verwendet werden.
Formeln werden bei jeder Abfrageausführung, die diese SQL-Definitionen verwendet, dynamisch ausgewertet. Jedes Mal, wenn in einem benutzerdefinierten SQL-Befehl für Tabellen oder Felder Qlik Formeln in der Ausführung einer Abfrage verwendet werden, werden diese Qlik Formeln zuerst ausgewertet, um die aktuellen Ergebnisse der Formeln abzurufen. Diese Ergebnisse werden in den benutzerdefinierten SQL-Befehl eingefügt und anstelle der ursprünglichen Abfrage ausgeführt. Es kann vorkommen, dass diese Auswertungen von Qlik Formeln selbst SQL-Abfragen aus der Remotedatenbank generieren. Es kann vorkommen, dass diese Auswertungen von Qlik Formeln selbst SQL-Abfragen aus der Remotedatenbank generieren.
Wenn eine Formel während des Ladens nicht erweitert werden kann, gibt sie einen Null-Wert zurück. Das bedeutet nicht, dass die Formel ungültig ist. Um ausgewertet zu werden, kann Ihre Formel Auswahlen erfordern, die ein Benutzer in einer App treffen muss.
Beispiel: Erstellen eines Datenmodells mit Qlik Formeln
Erstellen eines Datenmodells mit benutzerdefinierter SQL und Datenmodell-Manager
Sie können eine Kombination aus benutzerdefinierter SQL und Datenmodell-Manager nutzen, um Ihr Datenmodell für Direct Query zu erstellen. Dabei sind jedoch einige praktische Überlegungen zu beachten:
-
Als Best Practice sollten Sie alle Modellierungsvorgänge, die Sie im Datenmodell-Manager vornehmen möchten, abschließen, bevor Sie benutzerdefinierte SQL zum Ladeskript hinzufügen. Benutzerdefinierte SQL und Datenmodell-Manager funktionieren am besten miteinander, wenn der Datenmodell-Manager zum Definieren der geladenen Tabellen und Beziehungen zwischen Feldern verwendet wird, während benutzerdefinierte SQL für zusätzliche Anpassungen genutzt wird.
-
Der vom Datenmodell-Manager erstellte Teil des Datenmodells und der von der benutzerdefinierten SQL erstellte Teil werden getrennt verwaltet und dann beim Laden des Skripts miteinander kombiniert. Der Datenmodell-Manager zeigt keine von benutzerdefinierter SQL definierte Teile eines Datenmodells an. Verwenden Sie die Datenmodellansicht, um das vollständige Datenmodell anzuzeigen.
-
Das vom Datenmodell-Manager erstellte Datenmodell und das von Ihrer benutzerdefinierten SQL definierte Datenmodell müssen die gleiche Datenbankverbindung verwenden.
-
Sie können den IMPORT LIVE-Befehl verschieben, der Ihrem Ladeskript von Datenmodell-Manager hinzugefügt wurde. Das Ladeskript wird sequenziell ausgewertet. Daher kann sich seine neue Position auf die Anforderungen Ihrer benutzerdefinierten SQL auswirken. Sie kann beispielsweise unerwünschte Beziehungen erstellen oder Tabellennamen im endgültigen Datenmodell duplizieren.
-
Tabellen und Felder müssen im ganzen Datenmodell eindeutig benannt werden. Wenn Sie eine Tabelle im Datenmodell-Manager definieren und dann versuchen, die Tabelle in benutzerdefinierter SQL neu zu definieren, schlägt der Vorgang fehl, es sei denn, Sie entfernen entweder die in Datenmodell-Manager erstellte Tabelle, oder Sie benennen die Tabelle und die Felder in Ihre benutzerdefinierte SQL um.
Beschränkungen
Für benutzerdefinierte SQL für Direct Query gelten die folgenden Einschränkungen:
-
Benutzerdefinierte SQL kann nur eine einzige Datenbank verwenden.
-
Eine Direct Query-App, die einen oder mehrere benutzerdefinierte SQL-Befehle mit eingebetteten Qlik Formelmakros verwendet, kann nicht als Auswahl-App für On-Demand-Apps verwendet werden. Das liegt daran, dass eine generierte Vorlagen-App immer eine In-Memory-App ist und daher keine Qlik Formelmakros im Ladeskript unterstützt.
-
Direct Query Benutzerdefinierte SQL wird für im Aktivitätscenter Analysenhinzugefügte Skripte nicht unterstützt. Weitere Informationen zu Skripten finden Sie unter Arbeiten mit Skripten im Katalog.