Перейти к основному содержимому
Использование префикса Crosstable #Использование префикса Crosstable

НА ЭТОЙ СТРАНИЦЕ

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

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

Префикс Crosstable

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

Таблица продуктов
Продукт Jan 2014 Feb 2014 Mar 2014 Apr 2014 May 2014 Jun 2014
A 100 98 100 83 103 82
B 284 279 297 305 294 292
C 50 53 50 54 49 51

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

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

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

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

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

  1. Создайте новое приложение и назовите его Учебное пособие по написанию скриптов продвинутого уровня.
  2. Добавьте новый раздел скрипта в Редакторе загрузки данных.
  3. Название раздела Product.
  4. Под элементом DataFiles в меню справа щелкните Выбрать данные.

  5. Загрузите, а затем выберите Product.xlsx.
  6. Выберите таблицу Product в окне Выбрать данные из.
  7. Примечание о подсказкеУбедитесь, что в разделе Имена полей выбран параметр Встроенные имена полей, чтобы включить имена полей таблицы при загрузке данных.
  8. Щелкните команду Вставить скрипт.
  9. Скрипт должен выглядеть следующим образом:

    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);

  10. Щелкните команду Загрузить данные.
  11. Откройте раздел Просмотр модели данных. Модель данных выглядит так:
  12. Таблица Product, содержащая поле Product и по одному полю для каждого месяца
    Таблица Product, содержащая поле Product и по одному полю для каждого месяца.

  13. Щелкните вкладку Product в редакторе загрузки данных.
  14. Введите следующее над оператором LOAD:
  15. CrossTable(Month, Sales)

  16. Щелкните команду Загрузить данные.
  17. Откройте раздел Просмотр модели данных. Модель данных выглядит так:
  18. Таблица Product с полями Product, Month и Sales
    Таблица Product с полями Product, Month и Sales.

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

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

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

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

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

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

    Линейчатая диаграмма, отображающая данные, загруженные с использованием префикса Crosstable.
Примечание об информацииЧтобы узнать дополнительные сведения о функции Crosstable, см. эту запись блога в Qlik Community: The Crosstable Load (Загрузка с использованием префикса 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 могут иметь как единственное, так и множественное число.