常見問題集
安裝
問︰安裝 QlikView 的需求為何?
QlikView 的系統需求 (僅提供英文版)
QlikView 文件
問︰我需要多少 RAM?RAM 需求和資料量之間有簡單的關聯方式嗎?
答︰沒有,這需取決於資料結構和資料類型。資料列越多,且每個記錄越寬 (就欄位數目而言),就需要越多 RAM。如果欄位包含許多不同的相異值,就會比相異值數目低的情況,需要更多 RAM。某些圖表在計算時需要大量的 RAM。
問︰理論上,QlikView 文件大小的限制為何?
答︰並無法將此限制以多少記錄筆數來表達 (請參閱上一個問題)。一般而言,QlikView 在指令碼執行期間使用的記憶體,比起進行版面配置時多了 3 到 4 倍。
問︰我有 2 GB 的可用 RAM,但是在開啟 1 GB 文件時收到「記憶體不足」的錯誤訊息。哪裡出錯呢?
答︰QlikView 文件中的每個表格都需要配置連續的記憶體區塊。例如,如果記憶體由載入的 DLL 切割,配置就會失敗,並顯示恰當的錯誤訊息。此行為在不同電腦之間可能會有所差異。
問︰實際上使用者到底可以在 QlikView 中執行多大的文件?
答︰在配備如 512MB RAM 的 PC 中執行 QlikView 時,足可處理幾百萬列的典型交易資料。而在安裝 QlikView 和數 GB RAM 的大型伺服器中,於本文撰寫時 (來自 2008 年 5 月的資訊已有 7 年的歷史),可在客戶應用程式中處理多達十億列 (無彙總的完整交易詳細層級)。
指令碼和載入資料
問︰可在 QlikView 指令碼中使用不只一個 Binary 陳述式嗎?
答︰很遺憾,不可。二進位檔載入會使用非常特別的邏輯,將已處理過一次的資料讀入 QlikView 的另一個 QlikView 文件。所用的「解除封裝」需要記憶體在「原始狀態」下,因此 Binary 陳述式必須是指令碼中的第一個陳述式。也因此只能在指令碼中使用一次 Binary。不過,可以使用 QVD 檔案將多個 QlikView 文件的資料合併,速度與 Binary 相同。
問︰欄位名稱相同是自動聯結的唯一需求嗎?
答︰是,這類聯結稱為關聯。
問︰兩個有不同欄位名稱的欄位之間可以做到自動聯結嗎?
答︰可以,但必須在指令碼中使用 ALIAS 陳述式或 AS 子句,以重新命名其中一個欄位。
問︰可針對文字檔使用 Where 子句、Group by 子句及其他 SQL 語法嗎?
答︰QlikView 針對文字檔提供豐富的指令碼語言,包括大部分的 SQL 語法和一些額外功能。
問︰可針對 QlikView 二進位檔案使用 Where 子句、Group by 子句及其他 SQL 語法嗎?
答︰不行。
問︰內部表格之間的關聯、前有 join 限定詞的 load 或 select 陳述式,以及 select 陳述式內的聯結,三者之間有何差異?
答︰關聯是內部表格之間的聯結,當您按一下文件中的欄位值時就會進行評估。當兩個不同的表格有共通的欄位時,QlikView 會自動建立關聯。後兩種聯結是在指令碼執行期間進行,並且會產生新的邏輯表。在這種情況下,QlikView 不會將原始表格以邏輯表的方式載入。
此外,select 陳述式內的聯結通常僅載入索引鍵欄位值在兩個表格中都有的記錄 (內部聯結),而前兩種聯結還會包括索引鍵欄位值僅在其中一個表格中的記錄 (完整 outer join)。
問︰如何從固定記錄文字檔載入資料?
答︰使用 QlikView 中的表格檔案精靈。
問︰可以僅載入已變更的資料來更新 QlikView 文件嗎?
答︰可以,請使用累加式重新載入。
問︰可以從網頁將表格讀入 QlikView 嗎?
答︰可以,表格檔案精靈可以擷取以 HTML 表格形式編碼的表格。如果 HTML 頁面未包含正確格式化的表格標記,通常還是可以透過使用如 subfield 和 textbetween 指令碼函數來擷取資料。
QlikView 邏輯
問︰為何麼無法在某些列表框中顯示頻率?
答︰發生這種問題的列表框會包含與多個內部表格通用的一個欄位。因此,QlikView 無法知道如何計算欄位的頻率和其他統計實體。若要解決此問題可透過從主表格 (要顯示頻率的表格) 以新的名稱多載入一次該欄位,然後改成在列表框內顯示該欄位的頻率。透過標籤功能,一般使用者就不必注意到這個技巧。
問︰為什麼統計方塊只是顯示許多 n/a?
答︰該統計方塊包含了與多個內部表格通用的一個欄位。請參閱上一個問題的答案。
問︰為什麼 QlikView 不允許在圖表中的運算式使用某個欄位?
答︰該欄位是與多個內部表格通用的一個欄位。請參閱前兩個問題的答案。
問︰如何在統計方塊中顯示相異值的數目?
答︰在 load / select 陳述式中使用 distinct 子句。
問︰[列表框屬性] 對話方塊中的 [AND 模式] 選項何時啟用?
答︰僅在 QlikView 邏輯背後之理論所限制的極為嚴格條件下,才允許使用 [AND 模式] 選項。若要啟用 [AND 模式],該欄位必須︰
- 僅存在於一個內部表格中,
- 為該表格僅有的兩個欄位中的第二個欄位,而且
- 不包含任何重複的記錄。
- 必須前有 distinct 限定詞。
問︰列表框中的值選項可以混合 AND 和 OR 邏輯嗎?
答︰不可以,QlikView 邏輯禁止此種作法。
問︰列表框之間可以有 OR 邏輯嗎?
答︰只能採取間接方式。進階的替代方法是使用語意連結,將列表框中所做的選項轉送到其他欄位。然後變更原始列表框中的選項,接著按住 Ctrl 並按一下語意連結,以達成兩個選項之間的 OR 邏輯。最後的結果可以透過反轉語意連結來轉送。
問︰可以將多個資訊檔連結到一個值 (如圖片和文字檔) 嗎?
答︰可以,但只有在使用複製的欄位時才可以。QlikView 中的每個欄位都只能連結到一個資訊檔。
問︰為什麼 QlikView 有時候會將例如 '002'、'02' 及 '2' 解譯為相同的值?
答︰範例中所有的值在 QlikView 中共用相同的數值。原則上,QlikView 會先嘗試以數值解譯任何資料。如果數值解譯可行,就會用於關聯。然而,如果在指令碼中針對欄位使用 text() 解譯函數,就會將這些值僅僅視為文字值來處理。因此上述範例中的值就會解譯為三個不同的值。
問︰什麼是「迴圈」或循環表格結構?
答︰如果沿著欄位關聯會形成表格結構中永無止境的循環,這就稱為迴圈。另一個描述此現象的方式是兩個特定欄位之間,在表格結構上有兩個或以上不同的路線。應盡量避免迴圈,因為解譯資料時可能造成語意模糊。許多情況下,迴圈是資料庫設計不良的結果,但有些情況下卻可能無法避免。如果 QlikView 在執行指令碼時發現迴圈,就會發出警告並強制您利用鬆耦合表格來解決此問題。
版面配置
問︰為何麼沒有標題的工作表物件無法從上端調整大小?
答︰關閉工作表物件的標題後,上框線就僅可用於移動工作表物件,所以無法使用工作表物件的上邊角調整大小。
問︰嘗試拖曳表格框線時,為什麼無法向右展開?
答︰表格的右框線上有兩個控點。拖曳表格框線時,就是在調整表格中可顯示的外部界限。不過,無法使外框架大於表格中所有資料行寬度的加總。若要調整最右邊資料行的大小,請將游標放在外部框線的左側。請確定外框架不要落在資料行中間。如果發生這樣的情況,請使用捲軸,將資料行的右框線調至外框架。使用設計格線,即可看到工作表物件的實際外框架。
問︰可以變更 QlikView 文件中工作表物件的欄位名稱嗎?
答︰可以,可針對各個工作表物件中的每個欄位設定標籤。
問︰哪些工作表物件可以最小化?
答︰所有類型的工作表物件都可以最小化,但是此選項針對像是按鈕、文字物件及線條/箭頭物件等工作表物件,預設是關閉的。
問︰可以在工作表上移動最小化的物件嗎?
答︰可以,可以將這些物件自由地在工作表上移動,並放置在任何地方,還可在一定限制內調整大小。
與他人共用 QlikView 文件
問︰可以將 QlikView 文件置於伺服器上與他人共用嗎?
答︰可以,只要接收者具備註冊的 QlikView 授權,以及對該伺服器目錄的存取權即可。
問︰可以在真實的主從模式下使用 QlikView 嗎?
答︰可以,但需要 QlikView Server。
問︰可以將文件作為連結置於網頁上,讓他人透過網路存取嗎?
答︰可以,只要接收者具備註冊的 QlikView 授權,以及對該網頁的存取權即可。
問︰可以將文件以電子郵件的方式傳送給他人嗎?
答︰可以,只要接收者具備註冊的 QlikView 授權即可。
問︰可以防止某些人使用文件嗎?
答︰可以,只要使用「區段存取」功能來定義何人可以使用該等文件即可。
問︰可以防止他人查看/變更指令碼嗎?
答︰可以,「區段存取」可授予某些人 ADMIN 存取層級,但讓其他人處於 USER 存取層級,而無法查看指令碼。
問︰存取權的資訊可以儲存在哪裡?
答︰該資訊可以按文字檔的形式儲存在受保護的單位中,或以表格的形式儲存在資料庫中。還可以依 inline 陳述式的形式,儲存在指令碼中。
問︰可針對一大群使用者自動建立個人化複本嗎?
答︰可以,但需要 QlikView Server 的附加模組 QlikView Publisher。