跳到主要內容

語意連結

一般明確選取的方式是按一下感興趣的欄位值。不過,還有另外一種方式是透過語意連結來間接選取。語意連結與欄位值相似,但差別在於所描述的是物件之間的關聯,而非描述物件本身。它們會顯示為一列按鈕。

按一下語意連結時,會在另一個欄位做出選取。

語意表格的規則

備註: 語意表格不會顯示在表格檢視器中。

建立語意連結的方式是載入包含物件之間關聯的表格。

  • 該表格必須包含剛好三個或四個資料行。
  • 語意表格必須包含不同欄位的欄位值之間的關聯,或相同欄位的欄位值之間的關聯。但不接受兩者的混合體。
  • 載入語意表格的 LOADSELECT 陳述式時,必須在前面加上 semantic 限定詞,以表示這不是邏輯表。

一般會使用四個資料行,第一個包含與其他某些欄位值有關聯的欄位值,第三個包含相關的欄位值。第二個資料行必須包含關聯的名稱,而最後第四個必須包含反向關聯的名稱。

如果只使用三個資料行,則不會為反向關聯指定明確的名稱。在第二個資料行中指定的名稱會同時用於關聯和反向關聯。然後會在該名稱的前面或後面加上箭頭。

若為相同欄位的欄位值之間的關聯,則第一個和第三個資料行必須有相同的值。並且,第二個和第四個資料行的名稱 (亦即關聯的類型) 也必須相同。然而,若為不同欄位的欄位值之間的關聯,則所有的資料行都必須有不同的名稱。

 從資料擷取語意表格

語意表格不一定必須以表格的形式存在於 QlikView 之外。透過個別的 LOAD 陳述式,從現有的物件表擷取此表格,會更有彈性。

QlikView 範例目錄內的 presidents 範例中,用於產生連結 PredecessorSuccessor 的指令碼如下:

Directory presidents;

LOAD * from presdnts.csv (ansi, txt, delimiter

is ',', embedded labels);

Semantic LOAD

No -1 as No,

'Successor' as Relation,

No,

'Predecessor' as Relation

from presdnts.csv (ansi, txt, delimiter is ',',

embedded labels) where No > 1;

第二個 LOAD 陳述式會產生如右的表格,並且此表格是以語意表格的方式載入。where 子句是用於省略第一筆記錄,因為這會將第一任總統連結到不存在的第 0 任總統。

另外請注意,此 LOAD 陳述式包含兩個標籤為 No 的欄位,以及兩個標籤為 Relation 的欄位。如果用於載入內部表格,這樣的 LOAD 陳述式會造成指令碼執行錯誤,因為單一內部表格的載入程序會要求欄位不要有相同的名稱。也不可以使用對應的 SELECT 陳述式,因為大部分的 ODBC 驅動程式也會有同樣的要求。所以,如果該總統表格位於資料庫中,就應改用下列結構:

Connect to DataBase;

SELECT * from presdnts;

Alias No2 as No, Relation2 as Relation;

Semantic SELECT

No -1 as No,

'Successor' as Relation,

No as No2,

'Predecessor' as Relation2

from presdnts where No > 1;

此總統範例只是如何使用語意連結的一個簡單範例。這也可用於家譜,其中語意連結可以是表兄弟姊妹、兄弟姊妹、祖母等,或者用於公司中的員工,其中語意連結可以是 superiorreports tosecretary 等。

 使用相關值為關聯名稱

有時候使用相關欄位值為關聯的名稱較具描述性。以總統為例,建議將所有的前任總統放在一個資料行,而所有的繼任總統放在另一個資料行:

若要建立這些連結,需要下列指令碼:

LOAD

No as DuplicateOfNo,

FirstName & ' ' & LastName as Name,

*

from presdnts.csv;

Semantic LOAD

No -1 as No,

FirstName & ' ' & LastName as Successor,

No as DuplicateOfNo,

'Dummy1'

from presdnts.csv where No > 1;

Semantic LOAD

No +1 as No,

FirstName &' ' & LastName as Predecessor,

No as DuplicateOfNo,

'Dummy2'

from presdnts.csv;

按一下語意連結時,會在第三個資料行 (DuplicateOfNo) 的欄位中做出選取,該資料行在語意表格中一律是語意連結上顯示的總統任數。

起先也許不明顯,但上述建構中的反向關聯幾乎毫無用處。該反向關聯會顯示一位總統的名字,然後按一下時,會選取所顯示總統的前任/繼任總統。這就是為什麼將其稱為 Dummy1Dummy2,而且只會使用第一個關聯 (第二個資料行)。

因為不想要在列表框中顯示虛設的關聯,所以必須將第二個和第四個資料行視為不同類型的關聯。這表示第一個和第三個資料行必須有不同的欄位名稱。這就是為什麼有兩個資料行包含總統任數 (NoDuplicateOfNo)。

因為想要有兩個不同的列表框來包含關聯,所以需要兩個不同的 semantic 陳述式。

此範例也可利用含三個資料行的語意表格,但包含反向關聯的列表框很可能會讓使用者感到困惑。

Join the Analytics Modernization Program

Modernize by leveraging your QlikView investment to begin using Qlik Sense on the Cloud.

Want to know more?
Remove banner from view