数据建模的最佳实践

本部分介绍根据数据构建方式和需要实现的数据模型将数据加载到 Qlik Sense 应用程序中的各种不同方式。

将数据列转变为行

我的数据可能形式如此,我希望让销售数字位于单独的字段:

初始数据表
Q1 Q2 Q3 Q4
2013 34 54 53 52
2014 47 56 65 67
2015 57 56 63 71

Proposed action  

在您加载表格时,使用 Crosstable 前缀。

结果会如下所示:

在应用交叉表前缀后的表格
Year Quarter Sales
2013 Q1 34
2013 Q2 54
2013 Q3 53
2013 Q4 52
2014 Q1 47
... ... ...

要了解有关交叉表的更多信息,请参阅在数据加载脚本中使用交叉表Crosstable

将数据行转变为字段

我具有带三个与此相似的字段的通用表格,我希望让每个属性采用单独表格的形式:

带三个字段的一般表格
Object Attribute Value
ball color red
ball diameter 25
ball weight 3
box color 56
box height 30
box length 20
box width 25

Proposed action  

使用通用加载前缀创建通用数据模型。

您将得到与此类似的数据模型:

Generic data model.

要了解有关一般数据的更多信息,请参阅通用数据库Generic

加载以层次级别(例如组织体系)组织的数据

我的数据存储在与此类似的相邻节点表中:

相邻节点表
NodeID ParentNodeID Title
1 - General manager
2 1 Country manager
3 2 Region manager

Proposed action  

加载具有层次结构前缀的数据,创建扩展的节点表:

展开的节点表
NodeID ParentNodeID Title Level1 Level2 Level3
1 - General manager General manager - -
2 1 Country manager General manager Country manager -
3 2 Region manager General manager Country manager Region manager

要了解有关层次级别的更多信息,请参阅加载层次结构数据Hierarchy

仅从大型数据库加载新的或更新的记录

我拥有具有大量记录的数据库,我不希望重新加载整个数据库来刷新我应用程序中的数据。我只想加载新的或更新的记录,并移除已从数据库删除的记录。

Proposed action  

使用 QVD 文件实施增量加载解决方案。

有关更多信息,请参阅加载新的和更新的记录与增量加载

将来自两个表格的数据和公共字段整合

Qlik Sense 将自动把表格和通用字段关联,但是我希望控制组合表格的方式。

Proposed action : Join / Keep

您可将两个表格组合为具有 JoinKeep 前缀的单个内部表格。

有关更多信息,请参阅使用 Join 和 Keep 合并表格

Proposed action : Mapping

接合两个表格的备选方法为使用映射,由此在映射表中自动查找相关值。这样可减少要加载的数据量。

有关更多信息,请参阅将映射用作联接的替代

将离散值和间隔匹配

我有离散数值表 (Event),我希望将其和一个或多个间隔(Start End)匹配。

离散数值表 (Event)
时间 事件 注释
00:00 0 班次 1 开始
01:18 1 生产线停止
02:23 2 生产线重新启动 50%
04:15 3 生产线速度 100%
08:00 4 班次 2 开始
11:43 5 结束或生产
带间隔的表格(Start End
开始 结束 排序
01:00 03:35 A
02:30 07:58 B
03:04 10:27 C
07:23 11:43 D

Proposed action  

使用 IntervalMatch 前缀将 Time 字段和间隔关联,该间隔由 Start End 定义。

有关更多信息,请参阅离散数据的匹配间隔

如果间隔未明确定义开头和结尾,只有类似下表中的更改时间戳,您将需要创建间隔表。

带更改时间戳的表格
货币 更改数据 Rate
EUR - 8.59
EUR 28/01/2013 8.69
EUR 15/02/2013 8.45
USD - 6.50
USD 10/01/2013 6.56
USD 03/02/2013 6.30

有关更多信息,请参阅根据一个日期创建日期间隔

处理不一致的字段值

我的数据包含在不同表格中命名不一致的字段值。例如,一个表格在“国家/地区”字段包含值 US,而另一个表格则包含 United States。这种情况将阻止关联。

表格 1
国家/地区 区域
US Maryland
US Idaho
US New York
US California
Table 2
Country Population
United States 304
Japan 128
Brazil 192
China 1333

Proposed action  

使用映射表执行数据清理,由此将比较字段值并实现正确关联。

有关更多信息,请参阅数据清理

处理不一致的字段值首字母大写

我的数据包含在不同表格中格式不一致的字段值例如,一个表格包含值 singleType 中,而另一个表格在相同字段包含 Single。该情况将阻止关联,因为 Type 字段将包含 singleSingle 值、首字母大写的内容。

表格 1
类型 价格
23
39
表格 2
类型 颜色
单色 红色
单色 蓝色
白色
黑色

Proposed action  

如果您通过添加数据来加载数据,则可在数据管理器中解决该问题。

执行以下操作:

  1. 在数据管理器中,在表格编辑器中打开 Table2
  2. Type 字段重命名为 Table2.Type

    如果在启用数据分析后通过添加数据添加了表格,字段可能已命名为 Table2.Type 以防止自动关联。在该情况下,该程序将关联两个表格。

  3. 使用表达式 Lower(Table2.Type) 创建已计算字段并将其命名为 Type
  4. 单击加载数据

Table1Table2 现在应当已通过字段 Type 关联,该字段仅包含小写的值,例如 singledouble

如果您希望使用不同的首字母大写,则也可通过相似的程序完成操作,但是要记住表格将使用具有相同名称的字段关联。

  • 要让所有值大写,例如 Single,可改为创建计算的 Type 字段于 Table1 中,并使用表达式 Capitalize(Table1.Type)
  • 要让所有值为大写形式,例如 SINGLE,可在两个表格中创建计算的 Type 字段,并相应使用表达式 Upper(Table1.Type)Upper(Table2.Type)

要了解有关计算的字段的更多信息,请参阅使用已计算字段

要了解有关大写的更多信息,请参阅Capitalize - 脚本和图表函数Lower - 脚本和图表函数Upper - 脚本和图表函数

加载地理空间数据以使用地图将数据可视化

我有希望用地图可视化的数据,例如按国家/地区或按商店划分的销售数据。要使用地图可视化,我需要加载区域或点数据。

Proposed action  

您可从 KML 文件或 Excel 文件加载和您的数据值位置匹配的区域或点数据。此外,您需要加载实际地图背景。

有关更多信息,请参阅加载您自己的地图数据