Direct Query
Met de DIRECT QUERY-opdracht kunt u toegang verkrijgen via een ODBC- of OLE DB-verbinding met de Direct Discovery-functie.
Syntaxis:
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.
Met het trefwoord MEASURE kunt u velden definiëren waarvan QlikView 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 grafiekuitdrukkingen die worden gebruikt in een grafiek.
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. Om die reden kan dezelfde DIRECT QUERY-opdracht ongewijzigd worden gebruikt voor verschillende SQL-databases. Direct Discovery genereert zo nodig query's voor de desbetreffende database.
Er kan gebruik worden gemaakt van NATIVE gegevensbronsyntaxis als de gebruiker weet op welke database query's moeten worden uitgevoerd en gebruik wil maken van databasespecifieke uitbreidingen van SQL. Er wordt NATIVE 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"');
Argumenten:
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 QlikView-veldnaam. Een veldspecificatie kan ook een "veldalias" zijn. In dat geval wordt een QlikView-veldnaam gegeven aan een database-uitdrukking of kolomnaam. |
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 meeste SQL-uitdrukkingen zijn toegestaan, met inbegrip van het gebruik van functieaanroepen, de LIKE-operator voor tekenreeksen, IS NULL en IS NOT NULL, en IN. BETWEEN zijn 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)
|
Voorbeeld:
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 QlikView-gegevensverzameling.
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 DIMENSION tekenreeksgegevens bevatten zoals namen of rekeningnummers. Deze velden kunnen niet worden opgeteld maar wel worden geteld: count(Dim1).
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;