跳到主要内容

查看和转换数据模型

数据模型查看器是应用程序数据结构的概览。您可查看有关表格和字段的详细元数据。还可以通过数据字段创建维度和度量。

单击导航栏中准备标签下的数据模型查看器以打开“数据模型查看器”。

用方框表示每个数据表格,将表格名称用作标题并包含表格中列出的所有字段。用线表示表格关联,并用虚线表示循环引用。当选择一个表格或字段时,高亮显示的关联立即能够让您明白字段和表格的关联方式。您可通过单击 Search data model 搜索特定表格以及字段。

数据模式显示应用程序的数据结构。

Data model viewer.

您可以更改缩放级别,方法是单击 zoom inzoom out或使用滑块。单击 Home可将缩放级别恢复为 1:1。

在预览中,可以检查表格或字段的内容。如果选择字段,还可以将维度和度量快速添加到应用程序。有关更多信息,请参阅预览数据模型查看器中的表格和字段

移动表格

可以移动表格,只需在背景上拖动它们即可。当保存应用程序时,将保存表格位置。

您可以锁定表格布局(位置和大小),只需单击背景右部分的 Locked 即可。要解锁表格布局,请单击 Unlocked

还可以使用工具栏中 Grid View 下的选项自动排列布局:

用于移动表格的选项
UI 项目 名称 说明
Grid View 网格布局 用于在网格中排列表格。
auto 自动布局 用于排列表格以适应窗口大小。
Time 还原布局 最后打开数据模型查看器时,还原为布局状况显示。

调整表格大小

可以使用表格右下角的箭头调整表格的显示大小。当保存应用程序时,不会保存显示大小。

还可以使用工具栏中的自动设置显示大小选项:

用于重新调整表格大小的选项
UI 项目 名称 说明
Collapse 全部折叠 用于最小化所有表格,仅显示表格名称。
Reduce 显示链接字段 缩减所有表格的大小,以显示表格名称以及与其他表格关联的所有字段。
Expand 全部展开 用于最大化所有表格,以显示表格中的所有字段。

数据模型性能

以下是可影响数据模型性能的指标。每一个都是将改善应用程序可用性的最佳实践。

数据模型性能最佳实践
操作 说明

删除合成钥

在两个或更多数据表共有两个或更多字段时,Qlik Sense 会创建合成钥。这可能意味着脚本或数据模型中存在错误。要诊断合成钥,请参阅合成钥

从数据模型删除循环引用

当两个字段具有多个关联时,会发生循环引用。Qlik Sense 将尝试通过更改与其中一个表格之间的连接来解决这些问题。不过,应当解决所有循环引用警告,请参阅了解并解决循环引用

适当的数据粒度

您应当只加载必要的数据。例如:用户组仅需要按周、月和年划分的数据。您可在聚合的数据中加载,或在加载脚本中聚合数据以节省内存。如果用户确实需要可视化粒度级别较低的数据,可使用 ODAG 或文档链接。

尽可能使用 QVDs

QVD 文件包含从 Qlik Sense 中导出的数据表。当从脚本中读取数据时,该文件格式可提升速度,同时又非常紧凑。从 QVD 文件读取数据通常比从其他数据源读取快 10 到 100 倍。有关更多信息,请参阅使用 QVD 文件

在加载时优化 QVD 文件

QVD 文件可以用两种模式读取:标准(快速)和优化 (超快)。所选模式由脚本引擎自动确定。

对于优化的加载存在一些限制。可重命名字段,但任何这些操作将导致标准加载:

  • 加载的字段上的任何转换。
  • 使用 where 子句使得 Qlik Sense 将记录解压。
  • 在加载的字段上使用映射

利用增量加载

如果应用程序连接至不断更新的数据库中的大量数据,则加载整个数据集可能会非常耗时。您应当改为使用增量加载,以在数据库中检索新的或已更改的记录。有关详细信息,请参阅加载新的和更新的记录与增量加载

合并 Snowflake 模型

如果您有 Snowflake 数据模型,将能够通过使用 Join 前缀或其他映射联接它们中的一些来减少数据表的数目。这对于大型事实表尤其重要。一个好的经验法则是只有一个大型表。有关详细信息,请参阅联接或不联接

将具有较少字段数的表格去规范化

如果您有两个包含字段很少的表格,将它们合并可能会提升性能。有关更多信息,请参阅使用 Join 和 Keep 合并表格

采用映射加载的去规范化查找(叶)表格

如果您只需要将字段从一个表格添加到另一个表格,则不应当使用 Join 前缀。您应当使用 ApplyMap 查找函数,请参阅不要联接 - 使用 ApplyMap

将时间戳删除或与数据字段分离

当时间戳出现时,日期字段可能会填满空间,因为字符串表示更大,且不同值的数目更大。 如果您的分析不需要精度,您可以使用 Timestamp(Floor(YourTimestamp,1/24)) 将时间戳舍入到最近的小时,或者使用 Date(Floor(YourTimestamp)) 完全删除时间组件。

如果您需要时间戳,可将其与日期本身分离。您可使用相同的 Floor() 函数,然后沿用以下行,通过提取时间来创建新的字段:Time(Frac(YourTimestamp))

从数据模型删除不必要的字段

您应当仅在数据模型中加载必要的字段。避免使用 Load *SELECT。 确保您保留:

  • 对于分析必要的字段。
  • 应用程序中实际使用的字段。

在处理大量数据时避免链接表格

您应当尽可能使用链接表格。但是,如果您处理大量数据,串联表格可能优于链接表格。

串联维度分解为新的字段

您应当将串联的维度分解成单独字段。这样会减少在您的字段中唯一值的发生次数。这与时间戳的优化方式相似。

尽可能使用 AutoNumber

您可创建优化负载,方法是先从 QVD 文件将数据载入,然后使用 AutoNumber 语句将值转换为符号键。 有关更多信息,请参阅AutoNumberAutoNumber

避免数据岛

数据岛可能会有用,但通常会影响性能。如果您为选择项值创建岛,则使用变量。

基于增量时间范围存储 QVD

您应当分段存储 QVD,如每月。然后这些较小的月度 QVD 可支持可能不需要所有数据的许多不同应用程序。

有关最佳实践,请参阅数据建模的最佳实践