# 查看和转换数据模型

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

在应用程序导航菜单中单击数据模型查看器以打开数据模型查看器。

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

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

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

数据模型显示应用程序的数据结构。 ![数据模型查看器。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_data_model_viewer.png)

您可以更改缩放级别，只需单击 the 放大 icon、the 缩小 icon 或使用滑块即可。单击 the 主页 icon 可将缩放级别恢复为 1:1。

在预览中，可以检查表格或字段的内容。如果选择字段，还可以将维度和度量添加到应用程序。有关更多信息，请参阅[预览数据模型查看器中的表格和字段](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataModeling/preview-tables-fields-data-model-viewer.htm)。

## 移动表格

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

您可以锁定表格布局（位置和大小），只需单击背景右部分的 the 已锁定 icon 即可。要解锁表格布局，请单击 the 已解锁 icon。

还可以使用工具栏中 the 网格视图 icon 下的选项自动排列布局：

用于移动表格的选项

| UI 项目 | 名称 | 描述 |
| --- | --- | --- |
| the 网格视图 icon | 网格布局 | 用于在网格中排列表格。 |
| the 自动 icon | 自动布局 | 用于排列表格以适应窗口大小。 |
| the 时间 icon | 还原布局 | 最后打开数据模型查看器时，还原为布局状况显示。 |

## 调整表格大小

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

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

用于重新调整表格大小的选项

| UI 项目 | 名称 | 描述 |
| --- | --- | --- |
| the 折叠 icon | 全部折叠 | 用于最小化所有表格，仅显示表格名称。 |
| the 减少 icon | 显示链接字段 | 缩减所有表格的大小，以显示表格名称以及与其他表格关联的所有字段。 |
| the 展开 icon | 全部展开 | 用于最大化所有表格，以显示表格中的所有字段。 |

## 数据模型性能

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

数据模型性能最佳实践

| 操作 | 描述 |
| --- | --- |
| 删除合成钥 | 在两个或更多数据表共有两个或更多字段时，Qlik Sense 会创建合成钥。这可能意味着脚本或数据模型中存在错误。要诊断合成钥，请参阅[合成钥](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/synthetic-keys.htm)。 |
| 从数据模型删除循环引用 | 当两个字段具有多个关联时，会发生循环引用。Qlik Sense 将尝试通过更改与其中一个表格之间的连接来解决这些问题。但是，所有循环引用警告都应得到解决，请参阅[了解并解决循环引用](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/understand-circular-references.htm)。 |
| 适当的数据粒度 | 您应当只加载必要的数据。例如：用户组仅需要按周、月和年划分的数据。您可在聚合的数据中加载，或在加载脚本中聚合数据以节省内存。如果用户确实需要可视化粒度级别较低的数据，可使用 ODAG 或文档链接。 |
| 尽可能使用 QVDs | QVD 文件包含从 Qlik Sense 中导出的数据表。此文件格式在从脚本读取数据时已针对速度进行了优化，但仍非常紧凑。从 QVD 文件读取数据通常比从其他数据源读取快 10 到 100 倍。有关更多信息，请参阅[使用 QVD 文件](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/work-with-QVD-files.htm)。 |
| 在加载时优化 QVD 文件 | QVD 文件可以用两种模式读取：标准（快速）和优化（超快）。所选模式由脚本引擎自动确定。<br><br>对于优化的加载存在一些限制。可重命名字段，但任何这些操作将导致标准加载：<br><br><ul><li>加载的字段上的任何转换。 </li><li>使用 <span>where</span> 子句使得 <span>Qlik Sense</span> 将记录解压。 </li><li>在加载的字段上使用<span>映射</span>。</li></ul> |
| 利用增量加载 | 如果您的应用程序连接到来自不断更新的数据库的大量数据，则重新加载整个数据集可能会非常耗时。您应当改为使用增量加载，以在数据库中检索新的或已更改的记录。有关详细信息，请参阅[加载新的和更新的记录与增量加载](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/use-QVD-files-incremental-load.htm)。 |
| 合并 Snowflake 模型 | 如果您有 Snowflake 数据模型，将能够通过使用 Join 前缀或其他映射联接它们中的一些来减少数据表的数目。这对于大型事实表尤其重要。一个好的经验法则是只有一个大型表。有关详细信息，请参阅[联接或不联接](https://community.qlik.com/t5/Qlik-Design-Blog/To-Join-or-not-to-Join/ba-p/1463102)。 |
| 将具有较少字段数的表格去规范化 | 如果您有两个包含字段很少的表格，将它们合并可能会提升性能。 有关详细信息，请参阅[使用 Join 和 Keep 合并表格](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-with-join-keep.htm)。 |
| 采用映射加载的去规范化查找（叶）表格 | 如果您只需要将字段从一个表格添加到另一个表格，则不应当使用 Join 前缀。您应当使用 ApplyMap 查找函数，请参阅[不要联接 - 使用 ApplyMap](https://community.qlik.com/t5/Qlik-Design-Blog/Don-t-join-use-Applymap-instead/ba-p/1467592)。 |
| 将时间戳删除或与日期字段分离 | 当时间戳出现时，日期字段可能会填满空间，因为字符串表示更大，且不同值的数目更大。如果您的分析不需要精度，您可以使用 Timestamp(Floor(YourTimestamp,1/24)) 将时间戳舍入到最近的小时，或者使用 Date(Floor(YourTimestamp)) 完全删除时间组件。<br><br>如果您需要时间戳，可将其与日期本身分离。您可以使用相同的 Floor() 函数，然后通过使用类似以下内容来创建包含提取时间的新字段：Time(Frac(YourTimestamp))。 |
| 从数据模型删除不必要的字段 | 您应当仅在数据模型中加载必要的字段。避免使用 Load \* 和 SELECT。确保您保留：<br><br><ul> <li>对于分析必要的字段。</li> <li>实际在应用程序中使用的字段。 </li> </ul> |
| 在处理大量数据时避免链接表格 | 您应当尽可能使用链接表格。但是，如果您处理大量数据，串联表格可能优于链接表格。 |
| 串联维度分解为新的字段 | 您应当将串联的维度分解成单独字段。这样会减少在您的字段中唯一值的发生次数。这与时间戳的优化方式相似。 |
| 尽可能使用 AutoNumber | 您可创建优化负载，方法是先从 QVD 文件将数据载入，然后使用 AutoNumber 语句将值转换为符号键。 有关详细信息，请参阅[AutoNumber](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Autonumber.htm)。 |
| 避免数据岛 | 数据岛可能会有用，但通常会影响性能。如果您为选择项值创建岛，则使用变量。 |
| 基于增量时间范围存储 QVD | 您应当分段存储 QVD，如每月。这些较小的月度 QVD 可支持许多可能不需要所有数据的不同应用程序。 |

有关最佳实践，请参阅[数据建模的最佳实践](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataModeling/best-practices-data-modeling.htm)。

相关学习内容：

* [数据模型查看器简介](https://help.qlik.com/lnk/Intro_Data_Model_Viewer_QS)
* [从数据库中加载数据](https://help.qlik.com/lnk/Loading_data_from_database_QS)

## 了解详情

* [数据模型查看器简介](https://help.qlik.com/lnk/Intro_Data_Model_Viewer_QS)
* [从数据库中加载数据](https://help.qlik.com/lnk/Loading_data_from_database_QS)