Direct Discovery 變數
Direct Discovery 系統變數
DirectCacheSeconds
您可針對視覺化設定 Direct Discovery 查詢結果的快取限制。一旦達到此時間限制,Qlik Sense 會在執行新的 Direct Discovery 查詢時清除快取。Qlik Sense 會針對選項查詢來源資料,然後為指定的時間限制再次建立快取。每個選項組合的結果都會個別快取。也就是說,各個選項會個別重新整理快取;所以第一個選項只針對所選的欄位重新整理快取,而第二個選項則針對其相關欄位重新整理快取。如果第二個選項包含第一個選項已重新整理的欄位,則在快取限制尚未達到前,這些欄位不會在快取中再次更新。
Direct Discovery 快取不會套用至表格 視覺化。表格選項每次都會查詢資料來源。
限制值必須以秒為單位進行設定。預設的快取限制為 1800 秒 (30 分鐘)。
用於 DirectCacheSeconds 的值是在執行 DIRECT QUERY 陳述式當下所設定的值。該值在執行階段無法變更。
Example:
SET DirectCacheSeconds=1800;
DirectConnectionMax
透過連接共用功能,即可對資料庫執行非同步的平行呼叫。設定共用功能的載入指令碼語法如下所示︰
SET DirectConnectionMax=10;
該數值設定會指定 Direct Discovery 程式碼在更新工作表時,可使用之資料庫連接的數目上限。預設設定為 1。
備註: 應謹慎使用此變數。已知將其設為大於 1 會在連線至 Microsoft SQL Server 時引起問題。
DirectUnicodeStrings
透過使用針對延伸字元字串常值的 SQL 標準格式 (N'<延伸字串>'),Direct Discovery 就可支援對延伸 Unicode 資料的選取;這是部分資料庫 (尤其是 SQL Server ) 的要求。Direct Discovery 可透過指令碼變數 DirectUnicodeStrings 來使用這個語法。
設定此變數為 'True',即可在字串常值前使用 ANSI 標準寬字元標記 “N” 。並非所有資料庫都支援此標準。預設設定為 'False'。
DirectDistinctSupport
在 Qlik Sense 物件中選取 DIMENSION 欄位值時,即會針對來源資料庫產生查詢。當查詢需要分組時,Direct Discovery 會使用 DISTINCT 關鍵字,以僅選取唯一值。不過,部分資料庫必須使用 GROUP BY 關鍵字。將 DirectDistinctSupport 設為 'false' ,即可在用於唯一值的查詢中產生 GROUP BY ,而非 DISTINCT 。
SET DirectDistinctSupport='false';
如果將 DirectDistinctSupport 設為 True,則會使用 DISTINCT 。若未設定,預設行為是使用 DISTINCT 。
DirectEnableSubquery
在高基數的多表格案例中,可能會在 SQL 查詢中產生子查詢,而非產生較大的 IN 子句。這可透過將 DirectEnableSubquery 設定為 'true' 啟用。預設值為 'false' 。
備註: 當啟用 DirectEnableSubquery 時,您不能載入不處於 Direct Discovery 模式的表格。
SET DirectEnableSubquery='true';
Teradata 查詢級區變數
Teradata 查詢級區是能讓企業應用程式與基礎 Teradata 資料庫共同作業的功能,可提供更有效的計量、優先順序及工作負載管理。透過查詢級區,您可在查詢周圍包覆中繼資料,例如使用者認證。
有兩個變數可供使用,這兩個變數都是經過評估並傳送至資料庫的字串。
SQLSessionPrefix
此字串會在建立資料庫的連線時傳送。
SET SQLSessionPrefix = 'SET QUERY_BAND = ' & Chr(39) & 'Who=' & OSuser() & ';' & Chr(39) & ' FOR SESSION;';
舉例來說,如果 OSuser() 傳回 WA\sbt ,這將會被評估為 SET QUERY_BAND = 'Who=WA\sbt;' FOR SESSION; ,並於建立連線時傳送至資料庫。
SQLQueryPrefix
此字串會針對每一個查詢傳送。
SET SQLSessionPrefix = 'SET QUERY_BAND = ' & Chr(39) & 'Who=' & OSuser() & ';' & Chr(39) & ' FOR TRANSACTION;';
Direct Discovery 字元變數
DirectFieldColumnDelimiter
您可設定 Direct Query 陳述式中作為欄位分隔符號的字元,以用於需要逗號之外的字元作為欄位分隔符號的資料庫。指定的字元必須在 SET 陳述式中以單引號括住。
SET DirectFieldColumnDelimiter= '|'
DirectStringQuoteChar
您可指定在產生的查詢中要用於引用字串的字元。預設為單引號。指定的字元必須在 SET 陳述式中以單引號括住。
SET DirectStringQuoteChar= '"';
DirectIdentifierQuoteStyle
您可以指定在產生的查詢中要使用的識別碼非 ANSI 引號。目前唯一可用的非 ANSI 引號在 GoogleBQ 中提供。預設為 ANSI 。大寫、小寫及大小寫混合皆可使用 (ANSI, ansi, Ansi) 。
SET DirectIdentifierQuoteStyle="GoogleBQ";
例如,以下 SELECT 陳述式會使用 ANSI 引號︰
SELECT [Quarter] FROM [qvTest].[sales] GROUP BY [Quarter]
若 DirectIdentifierQuoteStyle 設為 "GoogleBQ" ,則 SELECT 陳述式會使用如下的引號︰
SELECT [Quarter] FROM [qvTest.sales] GROUP BY [Quarter]
DirectIdentifierQuoteChar
您可指定在產生的查詢中控制識別碼引號的字元。這可設為一個字元 (如雙引號) 或兩個字元 (如一對方括弧)。預設為雙引號。
SET DirectIdentifierQuoteChar='[]';
SET DirectIdentifierQuoteChar='``';
SET DirectIdentifierQuoteChar=' ';
SET DirectIdentifierQuoteChar='""';
Direct Discovery 中支援的資料來源
DirectTableBoxListThreshold
在表格 視覺化中使用 Direct Discovery 欄位時,會設定臨界值以限制所顯示的列數。預設臨界值為 1000 個記錄。預設臨界值設定可透過在載入指令碼中設定 DirectTableBoxListThreshold 進行變更。例如︰
SET DirectTableBoxListThreshold=5000;
此臨界值設定僅會套用至包含 Direct Discovery 欄位的表格 視覺化。僅包含記憶體內欄位的表格 視覺化不會受限於 DirectTableBoxListThreshold 設定。
直到選項比臨界值限制的記錄要少的時候,表格 視覺化才會顯示欄位。
Direct Discovery 數字解譯變數
DirectMoneyDecimalSep
此定義的小數點分隔符號可取代將使用 Direct Discovery 載入資料而產生的 SQL 陳述式中所用的貨幣小數符號。此字元必須符合 DirectMoneyFormat 中使用的字元。
預設值為 '.'
Example:
Set DirectMoneyDecimalSep='.';
DirectMoneyFormat
此定義的符號可取代將使用 Direct Discovery 載入資料而產生的 SQL 陳述式中所用的貨幣格式。不應該包含千位分隔符號的貨幣符號。
預設值為 '#.0000'
Example:
Set DirectMoneyFormat='#.0000';
DirectTimeFormat
此定義的時間格式可取代將使用 Direct Discovery 載入資料而產生的 SQL 陳述式中所用的時間格式。
Example:
Set DirectTimeFormat='hh:mm:ss';
DirectDateFormat
此定義的日期格式可取代將使用 Direct Discovery 載入資料而產生的 SQL 陳述式中所用的日期格式。
Example:
Set DirectDateFormat='MM/DD/YYYY';
DirectTimeStampFormat
此定義的格式可取代將使用 Direct Discovery 載入資料而產生的 SQL 陳述式中所用的日期和時間格式。
Example:
Set DirectTimestampFormat='M/D/YY
hh:mm:ss[.fff]';