Direct Query

DIRECT QUERY 陳述式允許您透過使用 Direct Discovery 功能的 ODBCOLE DB 連線,來存取表格。

備註: 此功能無法用於 Kubernetes

Syntax:  

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

[WHERE where_clause]

 

DIMENSIONMEASUREDETAIL 關鍵字可以按任何順序使用。

所有的 DIRECT QUERY 陳述式都需要有 DIMENSIONFROM 關鍵字子句。FROM 關鍵字必須出現在 DIMENSION 關鍵字之後。

緊接著 DIMENSION 關鍵字之後所指定的欄位會載入於記憶體內,並可用於在記憶體內資料和 Direct Discovery 資料之間建立關聯。

備註: DIRECT QUERY 陳述式不能包含 DISTINCTGROUP BY 子句。

使用 MEASURE 關鍵字,您可以定義 Qlik Sense 在「中繼層級」才會識別的欄位。在資料載入處理程序期間,量值欄位的實際資料僅位於資料庫上,並且由視覺化中使用的圖表運算式以臨機操作為基礎進行擷取。

一般來說,含離散值、要作為維度的欄位應以 DIMENSION 關鍵字載入,而僅要用於彙總的數字應以 MEASURE 關鍵字選取。

DETAIL 欄位可提供資訊或詳細資料 (如 [註解] 欄位),使用者可顯示在向下探查詳細資料的表格方塊中。DETAIL 欄位無法用於圖表運算式。

設計上,DIRECT QUERY 陳述式對於支援 SQL 的資料來源採取資料來源中性的態度。因此,相同的 DIRECT QUERY 陳述式不須變更即可用於不同的 SQL 資料庫。Direct Discovery 會視需要產生適合資料庫的查詢。

當使用者知道要查詢的資料庫為何,並且想要在 SQL 中利用資料庫特定的延伸,就可使用原生資料來源語法。原生資料來源語法支援︰

  • DIMENSIONMEASURE 子句中作為欄位運算式
  • 作為 WHERE 子句的內容

範例:

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"')
備註: 下列詞彙作為關鍵字使用,因此無法用作資料行或欄位名稱,以引用的方式除外︰ and, as, detach, detail, dimension, distinct, from, in, is, like, measure, native, not, or, where

Arguments:  

引數 描述
fieldlist

欄位規格的逗號分隔清單, fieldname {, fieldname}. 欄位規格可以是欄位名稱,在此情況下,相同名稱會用於資料庫資料行名稱和 Qlik Sense 欄位名稱。欄位規格也可以是「欄位別名」,在此情況下,資料庫運算式或資料行名稱會使用 Qlik Sense 欄位名稱。

Direct Discovery 欄位清單

tablelist

要從其中載入資料之資料庫中表格或檢視的名稱清單。這通常是其中包含在資料庫上執行 JOIN 的檢視。

where_clause

資料庫 WHERE 子句的完整語法不限於此,但大部分的 SQL「關聯運算式」都可使用,包括使用函數呼叫、用於字串的 LIKE 運算子、IS NULLIS NOT NULLIN. BETWEEN 不包括在內。

NOT 是一元運算子,而不是在某些關鍵字上的修飾詞。

範例:

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)

最後一個範例不可編寫為︰

WHERE X NOT in (1,2,3)

Example:  

此範例會使用稱為 TableName 的資料庫表格,其中包含欄位 Dim1Dim2Num1Num2Num3Dim1Dim2 會載入 Qlik Sense 資料集中。

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

Dim1Dim2 將可用作維度。Num1, Num2Num3 將可用於彙總。Dim1Dim2 也可用於彙總。Dim1Dim2 可用於彙總的類型取決於其資料類型。例如,許多情況下,維度 欄位包含如名稱或帳戶號碼的字串資料。這些欄位無法加總,但可計數︰count(Dim1)

備註: DIRECT QUERY 陳述式直接在指令碼編輯器中進行編寫。為了簡化 DIRECT QUERY 陳述式的建構,您可以從資料連線中產生一個 SELECT 陳述式,然後編輯所產生的指令碼,將它變更為 DIRECT QUERY 陳述式。
例如,SELECT 陳述式:

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


可以變更為下列 DIRECT QUERY 陳述式:

DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber

MEASURE
SubTotal,
TaxAmt

DETAIL
OrderDate

FROM MyDB.Sales.SalesOrderHeader;