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.

Hinweis: Der Befehl DIRECT QUERY kann keine DISTINCT- oder GROUP BY-Bedingungen enthalten.

Mithilfe des Schlüsselworts MEASURE können Sie Felder definieren, die QlikView 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 einem Diagramm 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-Datenquellensyntax 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

Examples:  

DIRECT QUERY
DIMENSION Dim1, Dim2
MEASURE
NATIVE ('X % Y') AS X_MOD_Y
FROM TableName
DIRECT QUERY
DIMENSION Dim1, Dim2
MEASURE X, Y
FROM TableName
WHERE NATIVE ('EMAIL MATCHES "\*.EDU"')
Hinweis: Die folgenden Begriffe werden als Befehle verwendet und können nur in Anführungsszeichen als Spalten- oder Feldnamen verwendet werden: and, as, detach, detail, dimension, distinct, from, in, is, like, measure, native, not, or, where

Arguments:  

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 QlikView-Feldnamen verwendet. Oder eine Feldspezifikation kann ein Feldalias sein: In diesem Fall erhält eine Datenbankformel oder ein Spaltenname einen QlikView-Feldnamen.

Direct Discovery-Feldlisten

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-Bedingungen der Datenbank wird hier nicht definiert, jedoch sind die meisten „relationalen Formeln“ für SQL zulässig, Funktionsaufrufe, der LIKE-Operator für Strings, IS NULL und IS NOT NULL und IN eingeschlossen. BETWEEN ist nicht eingeschlossen.

NOT ist ein einwertiger Operator, im Gegensatz zum Modifikator für bestimmte Schlüsselwörter.

Examples:  

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)

Example:  

In diesem Beispiel wird die Datenbanktabelle TableName mit den Feldern Dim1, Dim2, Num1, Num2 und Num3 verwendet.Dim1 und Dim2 werden in den QlikView-Datensatz geladen.

DIRECT QUERY DIMENSTION Dim1, Dim2 MEASURE Num1, Num2, Num3 FROM TableName ;
 

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).

Hinweis: DIRECT QUERY-Befehle werden direkt in den Skript-Editor geschrieben. Um den Aufbau von DIRECT QUERY-Befehlen zu vereinfachen, können Sie einen SELECT-Befehl aus einer Datenverbindung generieren und das generierte Skript anschließend entsprechend einem DIRECT QUERY-Befehl abändern.
Beispiel: Der SELECT-Befehl:

SQL SELECT
SalesOrderID,
RevisionNumber,
OrderDate,
SubTotal,
TaxAmt
FROM MyDB.Sales.SalesOrderHeader;


könnte in den folgenden DIRECT QUERY-Befehl geändert werden:

DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber

MEASURE
SubTotal,
TaxAmt

DETAIL
OrderDate

FROM MyDB.Sales.SalesOrderHeader;