Direct Query

De instructie DIRECT QUERY zorgt ervoor dat u tabellen kunt openen met een ODBC- of OLE DB-verbinding met gebruik van de Direct Discovery-functie.

Syntax:  

DIRECT QUERY DIMENSION fieldlist [MEASURE fieldlist[DETAIL fieldlist] FROM tablelist

[WHERE where_clause]

 

De trefwoorden DIMENSION, MEASURE en DETAIL kunnen in willekeurige volgorde worden gebruikt.

De trefwoordclausules DIMENSION en FROM zijn vereist in alle DIRECT QUERY-opdrachten. Het trefwoord FROM moet na het trefwoord DIMENSION komen.

De velden die zijn opgegeven direct na het trefwoord DIMENSION worden in het geheugen geladen om associaties tot stand te brengen tussen gegevens in het geheugen en Direct Discovery-gegevens.

Opmerking: De DIRECT QUERY-opdracht kan geen DISTINCT- of GROUP BY-clausules bevatten.

Met het trefwoord MEASURE kunt u velden definiëren waarvan Qlik Sense zich bewust is op “metaniveau”. De feitelijke gegevens van een metingsveld bevinden zich alleen tijdens het laden van de gegevens in de database en worden op ad hoc basis opgehaald via de diagramuitdrukkingen die worden gebruikt in een visualisatie.

Gewoonlijk kunnen velden met discrete waarden die zullen worden gebruikt als dimensies het beste worden geladen met het trefwoord DIMENSION, terwijl getallen die zullen worden gebruikt in aggregaties uitsluitend zouden meten worden geselecteerd met het trefwoord MEASURE.

Velden van het type DETAIL bieden informatie of details, zoals commentaarvelden, die een gebruiker wellicht wil weergeven in een tabelvak waarbij wordt geanalyseerd op detailniveau. Velden van het type DETAIL kunnen niet worden gebruikt in diagramuitdrukkingen.

De DIRECT QUERY-opdracht is zodanig ontworpen dat deze gegevensbronneutraal is voor gegevensbronnen die SQL ondersteunen.SQL Om die reden kan dezelfde DIRECT QUERY-opdracht ongewijzigd worden gebruikt voor verschillende SQL-databases.SQL Direct Discovery genereert zo nodig query's voor de desbetreffende database.

Er kan gebruik worden gemaakt van speciale gegevenbronsyntaxis als de gebruiker weet op welke database query's moeten worden uitgevoerd en gebruik wil maken van databasespecifieke uitbreidingen van SQL. Er wordt speciale gegevensbronsyntaxis ondersteund:

  • Als velduitdrukkingen in DIMENSION- en MEASURE-clausules
  • Als de inhoud van de WHERE-clausule

Voorbeelden:

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"')
Opmerking: De volgende termen worden gebruikt als trefwoorden en kunnen niet zonder aanhalingstekens worden gebruikt als kolom- of veldnamen: and, as, detach, detail, dimension, distinct, from, in, is, like, measure, native, not, or, where

Arguments:  

Argument Beschrijving
fieldlist

Een door komma's gescheiden lijst met veldspecificaties, . fieldname {, fieldname}. Een veldspecificatie kan een veldnaam zijn. In dat geval wordt dezelfde naam gebruikt voor de databasekolomnaam en de Qlik Sense-veldnaam. Een veldspecificatie kan ook een "veldalias" zijn. In dat geval wordt een Qlik Sense-veldnaam gegeven aan een database-uitdrukking of kolomnaam.

Direct Discovery-veldenlijsten

tablelist

Een lijst met de namen van tabellen of weergaven in de database waaruit gegevens worden geladen. Gewoonlijk zijn dit weergaven die een JOIN bevatten die worden uitgevoerd op de database.

where_clause

De volledige syntaxis van WHERE-clausules voor databases wordt hier niet gedefinieerd, maar de meesteSQL-uitdrukkingen zijn toegestaan, met inbegrip van het gebruik van functieaanroepen, de LIKE-operator voor tekenreeksen, IS NULL en IS NOT NULL, en IN. BETWEEN is niet inbegrepen.

NOT is een unaire operator, in tegenstelling tot een modificatie voor bepaalde trefwoorden.

Voorbeelden:

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)

Het laatste voorbeeld kan niet worden geschreven als:

WHERE X NOT in (1,2,3)

Example:  

In dit voorbeeld wordt een databasetabel genaamd TableName gebruikt, met de velden Dim1, Dim2, Num1, Num2 en Num3.Dim1 en Dim2 worden geladen in de Qlik Sense gegevensverzameling.

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

Dim1 en Dim2 zijn beschikbaar voor gebruik als dimensies. Num1, Num2 en Num3 zijn beschikbaar voor aggregaties. Dim1 en Dim2 zijn eveneens beschikbaar voor aggregaties. Het type aggregaties waarvoor Dim1 en Dim2 kunnen worden gebruikt is afhankelijk van het gegevenstype. In veel gevallen kunnen bijvoorbeeld velden van het type tekenreeksgegevens bevatten zoals namen of rekeningnummers. Deze velden kunnen niet worden opgeteld maar wel worden geteld: .count(Dim1)

Opmerking: DIRECT QUERY-opdrachten worden rechtstreeks in de scripteditor geschreven. U kunt het samenstellen van DIRECT QUERY-opdrachten vergemakkelijken door een SELECT-opdracht te maken op basis van een gegevensverbinding en vervolgens het gegenereerde script bewerken om deze in een DIRECT QUERY-opdracht te veranderen.
Bijvoorbeeld de SELECT-opdracht:

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


kan worden gewijzigd in de volgende DIRECT QUERY-opdracht:

DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber

MEASURE
SubTotal,
TaxAmt

DETAIL
OrderDate

FROM MyDB.Sales.SalesOrderHeader;