跳到主要内容

语义链接

单击感兴趣的字段值通常导致显式选择。然而,还可以直接通过语义链接进行选择。这些与字段值类似,除以下区别,即它们是描述对象之间的关系而非对象本身。显示为一列按钮。

当单击语义链接时,将会在其他字段中选择。

语义表格规则

备注: 语义表格未显示在表格查看器中。

语义链接通过加载包含对象间关系的表格创建。

  • 此表格必须包含三列或四列。
  • 语义表格要么包含不同字段字段值之间的关系,要么包含相同字段字段值之间的关系。混合这两种关系是不可接受的。
  • 加载语义表格的 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 子句用于省略第一条记录,因为这将链接第一个 president 到不存在的 0:th president。

还要注意,LOAD 语句包含两个标签为 No 的字段以及两个标签为 Relation 的字段。这样一个 LOAD 语句如果用于加载内部表格,会导致脚本执行错误,因为单个内部表格的加载程序要求任何字段都不可有相同的名称。同时,相应的 SELECT 语句也不可能用于此目的,因为大多数 ODBC 驱动程序也有此要求。相反,如果总裁 (president) 表格位于数据库,则应使用以下结构:

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;

presidents 示例只是如何使用语义链接的一个简单例子。这些还可以用于家谱中,其中语义链接可以是诸如表亲,兄弟姐妹,祖母等;或用于公司的员工,其中语义链接可以是诸如 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