邏輯表之間的關聯
資料庫中可包含許多表格。每個表格皆可視為某種清單;清單中的每筆記錄都代表某種類型物件的執行個體。
範例:
如果兩個表格是不同事物的清單,例如一個是客戶清單,另一個是發票清單,而兩個表格有一個共同的欄位,如客戶編號,這通常就是表示兩個表格之間存在某種關係。在標準 SQL 查詢工具中,這兩個表格幾乎一定會聯結。
在 QlikView 指令碼中定義的表格稱為邏輯表。QlikView 會根據欄位名稱,在表格之間建立關聯,並在進行選取時 (例如在列表框中選取欄位值) 執行聯結。
這表示關聯和聯結幾乎是相同的。唯一的差別在於聯結是在指令碼執行時所進行的,且聯結的結果通常是邏輯表。而關聯是在邏輯表建立後所進行的,且關聯一定是建立在邏輯表之間。
QlikView 關聯與 SQL 自然 outer join 作對比
QlikView 關聯類似於 SQL 自然 outer join。不過,關聯更具一般性:而 SQL 的 outer join 通常是一個表格單向投射到另一個表格。關聯一定會產生完整 (雙向) 自然 outer join。
關聯欄位中的頻率資訊
大部分關聯欄位,即兩個或更多表格之間的共同欄位,在使用上有一些限制。當某個欄位出現在一個以上的表格時,QlikView 就不太清楚該使用哪個表格來計算資料頻率。
QlikView 會分析資料,看看是否有明確的方式可辨識出主表格來計數 (有時候會有),但在大部分的情況下,程式只能猜測。因為錯誤的猜測可能會非常嚴重 (QlikView 似乎會計算錯誤),所以在設計上,當關聯欄位的資料解譯會造成語意模糊時,程式就不會允許某些運作。
關聯欄位的限制
- 無法在顯示該欄位的列表框中顯示頻率資訊。
- 該欄位的統計方塊對於大部分統計實體會顯示 n/a。
- 在圖表中無法建立其中包含取決於該欄位頻率資訊 (例如 Sum、Count 函數和 Average) 之函數的運算式,除非啟動 Distinct 修飾詞。每次重新載入後,QlikView 會掃描所有的圖表運算式,查看是否有任何因資料結構的變更而產生的語意模糊。如果發現語意模糊的運算式,將會顯示警告對話方塊,並停用該運算式。直到問題更正之後,才可啟用該運算式。若啟用記錄檔,則所有語意模糊的運算式都會列於記錄中。
因應措施
有一個簡單的方式可以克服這些限制。從要進行頻率計數的表格,將該欄位以新的名稱多載入一次。然後將新欄位用於含頻率的列表框、統計方塊或圖表中的計算。