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

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

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



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

交叉表通常位于许多限定列之后，这些列将被直接读取。在此例中，有一个限定列 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 前缀添加到 LOAD 或 SELECT 语句可实现此操作，例如：

`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 中创建下列结果：

使用限定列的表可表述为交叉表前缀的第三个参数

| 销售员 | 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 |
| ... | ... | ... | ... |

## 了解详情

* [Crosstable](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/crosstable.htm)