在数据加载脚本中使用交叉表

交叉表是常见的表格类型,特点是在两个标题数据正交列表之间显示值矩阵。如果要将数据关联到其他数据表格,交叉表通常不是最佳数据格式。

本主题介绍了如何逆透视交叉表,即,在数据加载脚本中使用 LOADcrosstable 前缀将部分交叉表转置为行。

使用一个限定列逆透视交叉表

交叉表通常位于许多限定列之后,这些列将被直接读取。在此例中,有一个限定列 Year,以及每个月的销售数据矩阵。

使用一个限定列的交叉表
Year Jan Feb Mar Apr May Jun
2008 45 65 78 12 78 22
2009 11 23 22 22 45 85
2010 65 56 22 79 12 56
2011 45 24 32 78 55 15
2012 45 56 35 78 68 82

如果此表格只是简单加载到 Qlik Sense,结果将为Year使用一个字段,每个月份各一字段。通常,这并非您希望看到的结果。您可能更希望生成三个字段:

  • 在此例中,在上述表格中限定列 Year 使用绿色标记。
  • 在此例中,使用黄色标记的 Jan - Jun 月份表示属性字段。可以适当地将此字段命名为 Month
  • 数据矩阵值使用蓝色标记。在此例中,它们表示销售数据,因此可以适当地将此字段命名为 Sales

通过将 crosstable 前缀添加到 LOADSELECT 语句可实现此操作,例如:

crosstable (Month, Sales) LOAD * from ex1.xlsx;

这可以在 Qlik Sense 中创建以下表格:

使用交叉表前缀的表格已添加至 LOAD 或 SELECT 语句
Year Month Sales
2008 一月 45
2008 二月 65
2008 三月 78
2008 四月 12
2008 五月 78
2008 六月 22
2009 一月 11
2009 二月 23
... ... ...

使用两个限定列逆透视交叉表

在此例中,左边有两个限定列,紧跟矩阵列之后。

使用两个限定列的交叉表
Salesman Year Jan Feb Mar Apr May Jun
A 2008 45 65 78 12 78 22
A 2009 11 23 22 22 45 85
A 2010 65 56 22 79 12 56
A 2011 45 24 32 78 55 15
A 2012 45 56 35 78 68 82
B 2008 57 77 90 24 90 34
B 2009 23 35 34 34 57 97
B 2010 77 68 34 91 24 68
B 2011 57 36 44 90 67 27
B 2012 57 68 47 90 80 94

限定列的数量可表述为 crosstable 前缀的第三个参数,如下所述:

crosstable (Month, Sales, 2) LOAD * from ex2.xlsx;

这可以在 Qlik Sense 中创建下列结果:

使用限定列的表可表述为交叉表前缀的第三个参数
Salesman Year Month Sales
A 2008 一月 45
A 2008 二月 65
A 2008 三月 78
A 2008 四月 12
A 2008 五月 78
A 2008 六月 22
A 2009 一月 11
A 2009 二月 23
... ... ... ...

See also: