Direct Query
Med DIRECT QUERY-satsen kan du komma åt tabeller genom enODBC eller OLE DB-koppling med hjälp av funktionen Direct Discovery.
Syntax:
DIRECT QUERY DIMENSION fieldlist [MEASURE fieldlist] [DETAIL fieldlist] FROM tablelist
[WHERE where_clause]
Nyckelorden DIMENSION, MEASURE och DETAIL kan användas i valfri ordning.
Nyckelordssatserna DIMENSION och FROM krävs i alla DIRECT QUERY-satser. Nyckelordet FROM måste komma efter nyckelordet DIMENSION.
Fälten som anges direkt efter nyckelordet DIMENSION laddas i minnet och kan användas för att skapa associationer mellan data i minnet och Direct Discovery-data.
Med hjälp av nyckelordet MEASURE kan du definiera fält som Qlik Sense kan tolka på "metanivå". Faktiska data för ett measure-fält finns enbart i databasen under dataladdningsprocessen, och hämtas vid behov utifrån de diagramuttryck som används i en visualisering.
Normalt bör fält med diskreta värden som ska användas som dimensioner laddas in med nyckelordet DIMENSION, medan tal som ska användas i aggregeringar enbart bör markeras med nyckelordet MEASURE.
DETAIL fälten innehåller information eller detaljer, exempelvis fälten ”Comment”, som en användare kan välja att visa i en detaljerad tabellbox. DETAIL-fält kan inte användas i diagramuttryck.
DIRECT QUERY-satsen är utformad för att vara datakällsneutral för datakällor som har stöd för SQL. Tack vare detta kan samma DIRECT QUERY-sats användas för olika SQL-databaser utan att behöva ändras. Direct Discovery genererar frågor lämpliga för databasen när så krävs.
Programegen syntax för datakällan kan användas när användaren vet vilken databas frågan ska skickas till och vill utnyttja databasspecifika komplement till SQL. Programegen syntax för datakällan stöds:
- Som fältuttryck i DIMENSION- och MEASURE-satser
- Som innehåll i WHERE-satsen
Exempel:
DIMENSION Dim1, Dim2MEASURENATIVE ('X % Y') AS X_MOD_Y
DIMENSION Dim1, Dim2MEASURE X, YFROM TableNameWHERE NATIVE ('EMAIL MATCHES "\*.EDU"')
Argument:
Argument | Beskrivning |
---|---|
fieldlist |
En kommaavgränsad lista med fältspecifikationer, fieldname {, fieldname}. En fältspecifikation kan vara ett fältnamn, och i så fall används samma namn som databaskolumnens namn och Qlik Sense-fältnamn. En fältspecifikation kan även vara ett ”fältalias”. Då får ett databasuttryck eller ett kolumnnamn ett Qlik Sense-fältnamn. |
tablelist |
En lista över namnen på tabeller eller vyer i databasen som data kommer att läsas in från. Normalt är det vyer som innehåller en JOIN som utförs på databasen. |
where_clause |
Den fullständiga syntaxen för WHERE-databassatser anges inte här, men de flesta ”SQL- relationsuttryck” är tillåtna, inklusive användning av funktionsanrop, LIKE-operatorn för strängar, IS NULL och IS NOT NULL och IN. BETWEEN ingår inte. NOT är en unär operator i motsats till en modifierare för vissa nyckelord. Exempel: 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)
Det sista exemplet kan inte skrivas som: WHERE X NOT in (1,2,3)
|
Exempel:
I det här exemplet används en databastabell som heter TableName och innehåller fälten Dim1, Dim2, Num1, Num2 och Num3.Dim1 och Dim2 laddas in i datauppsättningen Qlik Sense.
Dim1 och Dim2 blir tillgängliga att använda som dimensioner. Num1, Num2 och Num3 blir tillgängliga för aggregeringar. Dim1 och Dim2 är också tillgängliga för aggregeringar. Vilken typ av aggregeringar Dim1 och Dim2 kan användas för beror på deras datatyper. I många fall innehåller till exempel DIMENSION-fält strängdata som namn eller kontonummer. Dessa fält kan inte läggas ihop, men de kan räknas: count(Dim1).
Till exempel kan SELECT-satsen:
SQL SELECT
SalesOrderID,
RevisionNumber,
OrderDate,
SubTotal,
TaxAmt
FROM MyDB.Sales.SalesOrderHeader;
ändras till följande DIRECT QUERY-sats:
DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber
MEASURE
SubTotal,
TaxAmt
DETAIL
OrderDate
FROM MyDB.Sales.SalesOrderHeader;