Direct Query
Mit dem Befehl DIRECT QUERY können Sie Tabellen über eine ODBC- oder OLE DB-Verbindung aufrufen, und zwar mithilfe der Funktion Direct Discovery.
Syntax:
DIRECT QUERY DIMENSION fieldlist [MEASURE fieldlist] [DETAIL fieldlist] FROM tablelist
[WHERE where_clause]
Die Schlüsselwörter DIMENSION, MEASURE und DETAIL können in beliebiger Reihenfolge verwendet werden.
Die DIMENSION- und FROM-Schlüsselwortbedingungen sind bei allen DIRECT QUERY-Befehlen erforderlich. Das Schlüsselwort FROM muss nach dem Schlüsselwort DIMENSION stehen.
Die direkt hinter dem Schlüsselwort DIMENSION angegebenen Felder werden in den Speicher geladen und können zum Erstellen von Verknüpfungen zwischen im Speicher befindlichen und Direct Discovery-Daten verwendet werden.
Mithilfe des Schlüsselworts MEASURE können Sie Felder definieren, die Qlik Sense auf "Metaebene" erkennt. Die tatsächlichen Daten eines measure-Feldes sind nur während des Ladens der Daten in der Datenbank gespeichert und werden von den Diagrammfeldern, die in einer Visualisierung verwendet werden, ad hoc abgerufen.
Üblicherweise sollten Felder mit diskreten Werten, die als Dimensionen verwendet werden, mit dem Schlüsselwort DIMENSION geladen werden, wohingegen Zahlen, die nur in Aggregierungen verwendet werden, mit dem Schlüsselwort MEASURE ausgewählt werden sollten.
DETAIL-Felder beinhalten Informationen oder Details, wie z. B. Kommentarfelder, die Benutzern die detailliertere Anzeige von Daten in einer Tabellenbox ermöglichen. DETAIL-Felder können nicht als Diagrammformeln verwendet werden.
Der Befehl DIRECT QUERY ist für Datenquellen, die SQL unterstützen, datenquellenneutral. Deshalb kann derselbe DIRECT QUERY-Befehl für unterschiedliche SQL-Datenbanken unverändert verwendet werden. Direct Discovery generiert bei Bedarf datenbankgeeignete Abfragen.
Eine native Datenquellsyntax kann verwendet werden, wenn der Benutzer weiß, welche Datenbank abgefragt wird und datenbankspezifische Erweiterungen auf SQL anwenden möchte. Eine native Datenquellsyntax wird unterstützt:
- Als Feldformel in DIMENSION- und MEASURE-Bedingungen
- Als Inhalt der WHERE-Bedingung
Beispiele:
DIMENSION Dim1, Dim2MEASURENATIVE ('X % Y') AS X_MOD_Y
DIMENSION Dim1, Dim2MEASURE X, YFROM TableNameWHERE NATIVE ('EMAIL MATCHES "\*.EDU"')
Argumente:
Argument | Beschreibung |
---|---|
fieldlist |
Eine kommagetrennte Liste von Feldspezifikationen, fieldname {, fieldname}. Eine Feldspezifikation kann ein Feldname sein: In diesem Fall wird derselbe Name für den Datenbankspaltennamen und den Qlik Sense-Feldnamen verwendet. Oder eine Feldspezifikation kann ein Feldalias sein: In diesem Fall erhält eine Datenbankformel oder ein Spaltenname einen Qlik Sense-Feldnamen. |
tablelist |
Eine Liste der Namen von Tabellen oder Ansichten in der Datenbank, aus denen Daten geladen werden. Üblicherweise sind dies Ansichten, die einen JOIN enthalten, der auf die Datenbank angewendet wurde. |
where_clause |
Die vollständige Syntax der WHERE-Klauseln der Datenbank wird hier nicht definiert, jedoch sind die meisten „relationalen Formeln“ für SQL zulässig, darunter Funktionsaufrufe, der LIKE-Operator für Strings, IS NULL und IS NOT NULL sowie IN. BETWEEN ist nicht eingeschlossen. NOT ist ein einwertiger Operator, im Gegensatz zum Modifikator für bestimmte Schlüsselwörter. Beispiele: WHERE x > 100 AND "Region Code" IN ('south', 'west')
WHERE Code IS NOT NULL and Code LIKE '%prospect'
WHERE NOT X in (1,2,3)
Das letzte Beispiel kann nicht wie folgt geschrieben werden: WHERE X NOT in (1,2,3)
|
Beispiel:
In diesem Beispiel wird eine Datenbanktabelle mit dem Namen TableName verwendet, die die Felder Dim1, Dim2, Num1, Num2 und Num3 enthält.Dim1 und Dim2 werden in den Qlik Sense Datensatz geladen.
Dim1 und Dim2 stehen zur Verwendung als Dimensionen zur Verfügung. Num1, Num2 und Num3 stehen für Aggregierungen zur Verfügung. Dim1 and Dim2 stehen ebenfalls für Aggregierungen zur Verfügung. Die Art der Aggregierungen, für dieDim1 und Dim2 verwendet werden können, richtet sich nach ihrem Datentyp. In vielen Fällen enthalten DIMENSION-Felder z. B. String-Daten wie Namen oder Kundennummern. Diese Felder können nicht aggregiert, aber gezählt werden: count(Dim1).
Beispielsweise kann der SELECT-Befehl
SQL SELECT
SalesOrderID,
RevisionNumber,
OrderDate,
SubTotal,
TaxAmt
FROM MyDB.Sales.SalesOrderHeader;
zu folgendem DIRECT QUERY-Befehl geändert werden:
DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber
MEASURE
SubTotal,
TaxAmt
DETAIL
OrderDate
FROM MyDB.Sales.SalesOrderHeader;