# Использование префикса Crosstable

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

## Префикс Crosstable

В следующей таблице Product есть по одному столбцу для каждого месяца и по одной строке для каждого продукта.

Таблица продуктов

| Продукт | Янв 2014 | Фев 2014 | Мар 2014 | Апр 2014 | Май 2014 | Июнь 2014 |
| --- | --- | --- | --- | --- | --- | --- |
| A | 100 | 98 | 100 | 83 | 103 | 82 |
| Б | 284 | 279 | 297 | 305 | 294 | 292 |
| C | 50 | 53 | 50 | 54 | 49 | 51 |

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

Таблица Product, содержащая поле Product и по одному полю для каждого месяца

Таблица Product, содержащая поле Product и по одному полю для каждого месяца

Таблица ProductProduct, содержащая поле ProductProduct и по одному полю для каждого месяца ![Таблица Product, содержащая поле Product и по одному полю для каждого месяца.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-crosstable-data-model-before.png)

При необходимости проанализировать эти данные удобнее иметь все числа в одном поле, а все месяцы в другом. В таком случае это таблица из трех столбцов, с одним столбцом для каждой категории (Product, Month, Sales).

Таблица Product с полями Product, Month и Sales

Таблица Product с полями Product, Month и Sales

Таблица ProductProduct с полями ProductProduct, MonthMonth и SalesSales ![Таблица Product с полями Product, Month и Sales.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-crosstable-data-model-after.png)

Префикс Crosstable преобразует данные в таблицу с одним столбцом для категории Month и другим столбцом для категории Sales. Иначе говоря, имена полей преобразовываются в значения полей.

Выполните следующие действия.

1. Создайте новое приложение и назовите его Учебное пособие по написанию скриптов продвинутого уровня.

2. Добавьте новый раздел скрипта в Редакторе загрузки данных.

3. Название раздела Product.

4. Под элементом DataFiles в меню справа щелкните Выбрать данные.

5. Загрузите, а затем выберите Product.xlsx.

6. Выберите таблицу Product в окне Выбрать данные из.

   Примечание к подсказкеУбедитесь, что в разделе Имена полей выбран параметр Встроенные имена полей, чтобы включить имена полей таблицы при загрузке данных.

7. Нажмите Добавить.

   Скрипт должен выглядеть следующим образом:

   ```
   LOAD
       Product,
       "Jan 2014",
       "Feb 2014",
       "Mar 2014",
       "Apr 2014",
       "May 2014",
       "Jun 2014"
   FROM [lib://DataFiles/Product.xlsx] 
   (ooxml, embedded labels, table is Product);	
   ```

8. Щелкните команду Загрузить данные.

9. Откройте раздел Просмотр модели данных. Модель данных выглядит так:

   Таблица Product, содержащая поле Product и по одному полю для каждого месяца

   Таблица Product, содержащая поле Product и по одному полю для каждого месяца

   Таблица ProductProduct, содержащая поле ProductProduct и по одному полю для каждого месяца ![Таблица Product, содержащая поле Product и по одному полю для каждого месяца.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-crosstable-data-model-before.png)

10. Щелкните вкладку Product в редакторе загрузки данных.

11. Введите следующее над оператором LOAD:

    ```
    CrossTable(Month, Sales)
    ```

12. Щелкните команду Загрузить данные.

13. Откройте раздел Просмотр модели данных. Модель данных выглядит так:

    Таблица Product с полями Product, Month и Sales

    Таблица Product с полями Product, Month и Sales

    Таблица ProductProduct с полями ProductProduct, MonthMonth и SalesSales ![Таблица Product с полями Product, Month и Sales.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-crosstable-data-model-after.png)

    Обратите внимание, что обычно входные данные имеют только один столбец в качестве поля-квалификатора; в качестве внутреннего ключа (Product в примере выше). Но можно иметь несколько. Если так, то все поля-квалификаторы должны быть указаны перед полями атрибутов в операторе LOAD, а третий параметр для префикса Crosstable необходимо использовать для определения числа полей-квалификаторов. Нельзя ставить предшествующий оператор LOAD или префикс перед ключевым словом Crosstable. Однако можно использовать автоматическое объединение.

    Данные таблицы в Qlik Sense выглядят следующим образом:

    Таблица, в которой отображаются данные, загруженные с помощью префикса Crosstable

    Таблица, в которой отображаются данные, загруженные с помощью префикса Crosstable

    Таблица, в которой отображаются данные, загруженные с помощью префикса CrosstableCrosstable![Таблица, в которой отображаются данные, загруженные с помощью префикса Crosstable.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-crosstable-sense-table.png)

    Теперь вы можете, например, создать линейчатую диаграмму, используя следующие данные:

    Линейчатая диаграмма, отображающая данные, загруженные с использованием префикса Crosstable

    Линейчатая диаграмма, отображающая данные, загруженные с использованием префикса Crosstable

    Линейчатая диаграмма, отображающая данные, загруженные с использованием префикса CrosstableCrosstable![Линейчатая диаграмма, отображающая данные, загруженные с использованием префикса Crosstable.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-crosstable-sense-chart.png)

Примечание к информацииДля получения дополнительных сведений о функции Crosstable, см. эту запись блога в Qlik Community: [The Crosstable Load](https://community.qlik.com/t5/Qlik-Design-Blog/The-Crosstable-Load/ba-p/1468083) (Загрузка с использованием префикса Crosstable). Поведение обсуждается в контексте QlikView. Однако логика в равной степени относится к Qlik Sense.

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

Обратите внимание, что это просто пример. Здесь нет сопутствующих упражнений, которые следует выполнить в Qlik Sense.

```
tmpData:
Crosstable (MonthText, Sales)
LOAD Product, [Jan 2014], [Feb 2014], [Mar 2014], [Apr 2014], [May 2014], [Jun 2014]		
FROM ... 
 
Final:
LOAD Product,
Date(Date#(MonthText,'MMM YYYY'),'MMM YYYY') as Month,
Sales
Resident tmpData;
Drop Table tmpData;
```

## Очистка кэша памяти

Чтобы очистить кэш памяти, созданные таблицы можно удалить. При использовании временной таблицы для выполнения загрузки, как в предыдущем разделе, эту таблицу можно удалить, когда в ней больше не будет необходимости. Например:

DROP TABLE Table1, Table2, Table3, Table4; DROP TABLES Table1, Table2, Table3, Table4;

Можно также удалить поля. Например:

DROP FIELD Field1, Field2, Field3, Field4; DROP FIELDS Field1, Field2, Field3, Field4; DROP FIELD Field1 from Table1; DROP FIELDS Field1 from Table1;

Как видите, ключевые слова TABLE и FIELD могут иметь как единственное, так и множественное число.