# Работа с перекрестными таблицами в скрипте загрузки данных

Перекрестная таблица — распространенный тип таблиц, включающих матрицу значений, расположенную между двумя ортогональными списками данных в заголовках. Как правило, если необходимо выполнить привязку данных к другим таблицам данных, этот формат данных не является оптимальным.

В данной теме описан порядок отмены сведения перекрестной таблицы. Это действие предусматривает разнесение частей таблицы по строкам с помощью подстановки префикса crosstable к оператору LOAD в скрипте загрузки данных.



## Отмена сведения перекрестной таблицы с одним столбцом классификации

Перед перекрестной таблицей часто задается число столбцов классификации, которое может считываться прямым способом. В данном случае существует один столбец классификации 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 создается следующая таблица:

Таблица с префиксом crosstable, добавленным в операторы LOAD или SELECT

| Year | Month | Sales |
| --- | --- | --- |
| 2008 | Янв | 45 |
| 2008 | Фев | 65 |
| 2008 | Мар | 78 |
| 2008 | Апр | 12 |
| 2008 | May | 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 |
| Б | 2008 | 57 | 77 | 90 | 24 | 90 | 34 |
| Б | 2009 | 23 | 35 | 34 | 34 | 57 | 97 |
| Б | 2010 | 77 | 68 | 34 | 91 | 24 | 68 |
| Б | 2011 | 57 | 36 | 44 | 90 | 67 | 27 |
| Б | 2012 | 57 | 68 | 47 | 90 | 80 | 94 |

Число столбцов классификации можно задать в виде третьего параметра в префиксе crosstable следующим образом:

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

При этом в программе Qlik Sense будет получен следующий результат:

Таблица, число столбцов классификации которой задано в виде третьего параметра в префиксе crosstable

| Продавец | Year | Month | Sales |
| --- | --- | --- | --- |
| A | 2008 | Янв | 45 |
| A | 2008 | Фев | 65 |
| A | 2008 | Мар | 78 |
| A | 2008 | Апр | 12 |
| A | 2008 | May | 78 |
| A | 2008 | Июн | 22 |
| A | 2009 | Янв | 11 |
| A | 2009 | Фев | 23 |
| ... | ... | ... | ... |

## Подробнее

* [Crosstable](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/crosstable.htm)