Generic
Generic 加载前缀允许将实体-属性-值建模数据 (EAV) 转换为传统的规范化关系表结构。EAV 建模也称为“通用数据建模”或“开放模式”。
虽然在技术上可以加载和分析 Qlik 中 EAV建模的数据,但使用等效的传统关系数据结构通常更容易。
语法:
Generic( loadstatement | selectstatement )
这些主题可以帮助您使用此函数:
主题 | 说明 |
---|---|
Crosstable | Crosstable 加载前缀将水平方向的数据转换为垂直方向的数据。从纯功能的角度来看,它执行与 Generic 加载前缀相反的转换,尽管前缀通常服务于完全不同的用例。 |
通用数据库 | 这里进一步描述了 EAV 结构化数据模型。 |
示例 1 – 使用通用加载前缀转换 EAV 结构化数据
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含一个数据集,该数据集加载到名为 Transactions 的表中。数据表包括一个日期字段。使用了默认 MonthNames 定义。
加载脚本
Products:
Generic
Load * inline [
Product ID, Attribute, Value
13, Status, Discontinued
13, Color, Brown
20, Color, White
13, Size, 13-15
20, Size, 16-18
2, Status, Discontinued
5, Color, Brown
2, Color, White
44, Color, Brown
45, Size, 16-18
45, Color, Brown
];
结果
加载数据并打开工作表。创建新表并将该字段添加为维度: Color。
添加该度量:
=Count([Product ID])
现在您可以按颜色检查产品数量。
颜色 | =Count([Product ID]) |
---|---|
棕色 | 4 |
白色 | 2 |
注意数据模型的形状,其中每个属性都被分解为一个单独的表,根据原始目标表标记 Product 命名。每个表都有一个属性作为后缀。这方面的一个示例为 Product.Color。生成的产品属性输出记录由 Product ID 关联。
产品 ID | 状态 |
---|---|
13 | 中断 |
2 | 中断 |
产品 ID | 大小 |
---|---|
13 | 13-15 |
20 | 16-18 |
45 | 16-18 |
产品 ID | 颜色 |
---|---|
13 | 棕色 |
5 | 棕色 |
44 | 棕色 |
45 | 棕色 |
20 | 白色 |
2 | 白色 |
示例 2 – 分析没有通用加载前缀的EAV结构化数据
概述
本示例演示如何分析原始形式的 EAV 结构化数据。
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含一个数据集,该数据集加载到名为 Products 的采用 EAV 结构的表中。
在本例中,我们仍然按颜色属性计算产品数量。为了分析以这种方式结构化的数据,需要对带有属性值 Color 的产品应用表达式级过滤。
此外,单个属性不可选择为维度或字段,因此更难确定如何构建有效的可视化。
加载脚本
Products:
Load * Inline
[
Product ID, Attribute, Value
13, Status, Discontinued
13, Color, Brown
20, Color, White
13, Size, 13-15
20, Size, 16-18
2, Status, Discontinued
5, Color, Brown
2, Color, White
44, Color, Brown
45, Size, 16-18
45, Color, Brown
];
结果
加载数据并打开工作表。创建新表并将该字段添加为维度: Value。
创建以下度量:
=Count({<Attribute={'Color'}>} [Product ID])
现在您可以按颜色检查产品数量。
值 | =Count({<Attribute={'Color'}>} [Product ID]) |
---|---|
棕色 | 4 |
白色 | 2 |
示例 3 – 从通用加载中去规范化结果输出表(高级)
概述
在本例中,我们展示了如何将 Generic 加载前缀生成的规范化数据结构反规范化回合并 Product 维度表。这是一种高级建模技术,可以作为数据模型性能调整的一部分使用。
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本
Products:
Generic
Load * inline [
Product ID, Attribute, Value
13, Status, Discontinued
13, Color, Brown
20, Color, White
13, Size, 13-15
20, Size, 16-18
2, Status, Discontinued
5, Color, Brown
2, Color, White
44, Color, Brown
45, Size, 16-18
45, Color, Brown
];
RENAME TABLE Products.Color TO Products;
OUTER JOIN (Products)
LOAD * RESIDENT Products.Size;
OUTER JOIN (Products)
LOAD * RESIDENT Products.Status;
DROP TABLES Products.Size,Products.Status;
结果
打开数据模型查看器,并记录结果数据模型的形状。仅存在一个非规范化表。它是三个中间输出表的组合:Products.Size、Products.Status 和 Products.Color。
Products |
---|
产品 ID |
状态 |
颜色 |
大小 |
产品 ID | 状态 | 颜色 | 大小 |
---|---|---|---|
13 | 中断 | 棕色 | 13-15 |
20 | - | 白色 | 16-18 |
2 | 中断 | 白色 | - |
5 | - | 棕色 | - |
44 | - | 棕色 | - |
45 | - | 棕色 | 16-18 |
加载数据并打开工作表。创建新表并将该字段添加为维度: Color。
添加该度量:
=Count([Product ID])
颜色 | =Count([Product ID]) |
---|---|
棕色 | 4 |
白色 | 2 |