# Анализ

QV2QS автоматически сканирует каждый документ QlikView на наличие функций и шаблонов, которые могут потребовать внимания после миграции. Некоторые результаты носят информационный характер. Другие результаты указывают на неподдерживаемую функциональность или области, которые работают в Qlik Sense иначе. Результаты отображаются в разделе Другие выводы краткого резюме и на листе Анализ отчета Excel.

Анализ отделен от отчета о преобразовании. Отчет о преобразовании оценивает, насколько успешно были преобразованы объекты. Анализ выявляет дополнительные проблемы совместимости для развертывания Qlik Cloud.

## Что сканируется

QV2QS проверяет семь областей документа QlikView.

Скрытый скрипт

Документы QlikView могут содержать скрытый Скрипт загрузки, который выполняется перед видимым скриптом. Скрытый скрипт хранится внутри сжатого блока в бинарном файле QVW/QVF и не отображается в папке PRJ. QV2QS извлекает скрытый скрипт из бинарного файла и добавляет его в начало видимого Скрипта загрузки в `script.qvs`. При обнаружении скрытого скрипта на рабочем листе «Анализ» и в разделе «Другие замечания» краткого резюме отображается информационное замечание.

Загрузить шаблоны скриптов

QV2QS сканирует Скрипт загрузки (`LoadScript.txt`) на наличие операторов и функций, требующих внимания во время миграции. Если присутствует скрытый скрипт, содержимое скрытого скрипта включается в сканирование. Некоторые операторы не поддерживаются в Qlik Sense. Для других шаблонов могут потребоваться корректировки путей или альтернативное решение. Строки комментариев и блочные комментарии исключены из сканирования.

Обнаружены следующие шаблоны:

| Образец | Описание |
| --- | --- |
| Загрузка двоичного файла | `BINARY` оператор, загружающий данные из другого файла QVW. Возможно, потребуется пересмотреть подход к загрузке данных. |
| Загрузка пакета | Операторы `BUNDLE` или `INFO LOAD`, которые встраивают изображения в QVW. Не поддерживается в Qlik Sense. |
| InputField | Оператор `INPUTFIELD` для ввода пользовательских данных. Не поддерживается в Qlik Sense. |
| Direct Discovery | Оператор `DIRECT QUERY` для подключений к источнику данных в режиме реального времени. Не поддерживается в Qlik Sense. |
| Включить | `$(Include=...)` или `$(Must_Include=...)` ссылки на внешние файлы скриптов. Возможно, потребуется скорректировать пути к файлам. |
| Команда | Оператор `COMMAND`, выполняющий команды операционной системы. Не поддерживается в Qlik Sense. |
| Выполните: | Оператор `EXECUTE`, запускающий внешние программы. Не поддерживается в Qlik Cloud. |
| Image\_Size | Функция `Image_Size` Не поддерживается в Qlik Sense. |
| GetCurrentField | Функция `GetCurrentField` Не поддерживается в Qlik Sense. |
| GetExtendedProperty | Функция `GetExtendedProperty` Не поддерживается в Qlik Sense. |
| Входное среднее / Входная сумма | Агрегатные функции для входных полей. Не поддерживается в Qlik Sense. |
| MsgBox | Функция `MsgBox` для диалоговых окон. Не поддерживается в Qlik Sense. |
| NoOfReports | Функция `NoOfReports` Не поддерживается в Qlik Sense. |
| Комментарий к отчету / Идентификатор отчета / Название отчета / Номер отчета | Функции, связанные с отчетами. Не поддерживается в Qlik Sense. |

Каждый результат содержит номер строки и текст строки из Скрипта загрузки.

Свойства документа

QV2QS проверяет `DocProperties.xml` на наличие функций уровня документа, требующих внимания. Некоторые не поддерживаются в Qlik Sense. Другие поддерживаются, но требуют ручной настройки или ведут себя иначе.

| Свойство | Описание |
| --- | --- |
| Section Access | Безопасность на уровне строк включена. Qlik Sense поддерживает Section Access, но синтаксис отличается. |
| Динамическое обновление данных | Динамическое обновление данных включено. Не поддерживается в Qlik Sense. |
| Режим Direct Discovery | Режим Direct Query включен на уровне документа. Не поддерживается в Qlik Sense. |
| Оповещения | Определения оповещений существуют. Оповещения не поддерживаются в Qlik Sense. |
| Действия OnOpen документа | Определены действия триггера OnOpen на уровне документа. Требуется пересоздать вручную. |
| Действия документа OnPostReload | Определены действия триггера OnPostReload на уровне документа. Требуется пересоздать вручную. |
| Расширения документа | Расширения документов установлены. Расширения, кроме `QVAccessibility`, не поддерживаются. |

Свойства поля

QV2QS обнаруживает поля с включенным свойством Всегда одно выбранное. Это свойство является настройкой уровня движка, которую нельзя применить через выходные данные сборки JSON. Свойство необходимо применить вручную в редакторе приложения Qlik Sense после развертывания.

Макросы VBA

QV2QS считывает `Module.txt` из папки PRJ и выполняет синтаксический анализ всех определений Sub и Function VBA. Для каждого макроса в отчете об анализе указываются имя, тип (Sub или Function) и количество строк.

QV2QS также создает перекрестные ссылки на вызовы макросов, сканируя каждый XML-файл объекта и `DocProperties.xml` на наличие триггеров действий, вызывающих макросы. Перекрестная ссылка определяет, какие объекты вызывают какие макросы, а также листы, на которых расположены эти объекты. Макросы, которые определены, но ни разу не вызываются, помечаются как неиспользуемые.

Кавычки в выражениях при анализе множеств

QV2QS сканирует все выражения объектов (измерения, меры, условия отображения, выражения цвета, текстовые выражения) и определения переменных на наличие шаблонов расстановки кавычек в Set Analysis, которые ведут себя иначе в Qlik Sense. QlikView (до ноября 2017 года) обрабатывал значения в одинарных кавычках в модификаторах множеств как поиск без учета регистра, аналогично значениям в двойных кавычках. Qlik Sense обрабатывает значения в одинарных кавычках как литералы, чувствительные к регистру.

Обнаружены следующие шаблоны:

| Образец | Правило | Вероятность | Описание | Устранение |
| --- | --- | --- | --- | --- |
| Знак подстановки в одинарных кавычках (`'*US*'`, `'A?'`, `'^abc'`) | Символ подстановки в одинарных кавычках | Высокий | Символы подстановки `*`, `?` и привязка к границе слова `^` в Qlik Sense интерпретируются как буквальный текст, а не как шаблоны поиска. | Замените одинарные кавычки двойными, чтобы восстановить поведение поиска. |
| Сравнение в одинарных кавычках (`'>=5'`, `'<2020'`) | Сравнение в одинарных кавычках | Высокий | Операторы сравнения `>`, `>=`, `<`, `<=` интерпретируются в Qlik Sense как буквальный текст, а не как числовой поиск. | Замените одинарные кавычки двойными, чтобы восстановить числовое сравнение. |
| Нечеткий поиск в одинарных кавычках (`'~company'`) | Нечеткий поиск в одинарных кавычках | Высокий | Префикс `~` активирует нечеткое сопоставление в двойных кавычках. В одинарных кавычках Qlik Sense рассматривает это как строковый литерал. | Замените одинарные кавычки на двойные, чтобы восстановить нечеткий поиск. |
| Поиск выражений в одинарных кавычках (`'=Sum(Sales)>100'`) | Поиск выражения в одинарных кавычках | Высокий | `=` Префикс запускает поиск выражений в двойных кавычках. В одинарных кавычках Qlik Sense рассматривает это как строковый литерал. | Замените одинарные кавычки на двойные кавычки, чтобы восстановить поиск выражений. |
| Модификатор поиска в одинарных кавычках (`'+abc'`, `'-solution'`) | Модификатор поиска в одинарных кавычках | Высокий | Модификаторы `+` (должен содержать) и `-` (не должен содержать) работают в двойных кавычках. В одинарных кавычках, Qlik Sense рассматривает их как литеральные строки. | Замените одинарные кавычки на двойные, чтобы восстановить поведение модификатора. |
| Поиск составных выражений в одинарных кавычках (`'(1\|2\|3)'`, `'(*ABC*&?*Inc*)'`) | Составной поиск в одинарных кавычках | Высокий | Составной поиск с логическими операторами `\|` (ИЛИ), `&` (И), `^` (ИСКЛЮЧАЮЩЕЕ ИЛИ) работает в двойных кавычках. В одинарных кавычках Qlik Sense рассматривает это как строковый литерал. | Замените одинарные кавычки на двойные кавычки, чтобы восстановить составной поиск. |
| Значение в одинарных кавычках в числовом поле (`'2020'` в поле даты или числа) | Одинарные кавычки в числовом поле | Высокий | Значения в одинарных кавычках соответствуют текстовому представлению в Qlik Sense. В числовых или двойных полях текстовое представление может не совпадать с сохраненным значением, что приводит к несоответствию типов. | Используйте числовое значение без кавычек или двойные кавычки вместо этого. |
| Строка без кавычек (`{USA,France}`) | Неэкранированное голое значение | Низкий | Qlik Sense принимает значения без кавычек, но поведение нестабильно при наличии пробелов, операторов или специальных символов. | Заключите значение в одинарные кавычки для точного совпадения. |
| Прямая ссылка на поле (`<Field1=Field2>`) | Прямая ссылка на поле | Высокий | QlikView позволяет `<Field1=Field2>` передавать выделения между полями. Qlik Sense не поддерживает прямые ссылки между полями в модификаторах набора. | Замените на `<Field1=P(Field2)>` чтобы использовать функцию элемента P(). |
| Простое значение без скобок (`<Country=USA>`) | Голое значение без скобок | Высокий | Непосредственное значение без фигурных скобок в правой части присваивания модификатора набора. QlikView может интерпретировать значение как литерал или ссылку на поле в зависимости от контекста. Qlik Sense требует, чтобы значения находились внутри фигурных скобок. | Заключите в фигурные скобки: `<Country={USA}>` или `<Country={'USA'}>`. |

Значения обычного текста в одинарных кавычках в текстовых полях (например, `'USA'`) не помечаются. Эти значения корректно работают как литералы с учетом регистра в Qlik Sense.

QV2QS поддерживает заключенные в квадратные скобки (`[Invoice Number]`), заключенные в двойные кавычки (`"Invoice Number"`), и заключенные в обратные кавычки (`` `Invoice Number` ``) имена полей в левой части присваиваний модификаторов набора. Все три стиля цитирования распознаются при сканировании и исправлении.

По умолчанию, QV2QS автоматически исправляет значения поиска в одинарных кавычках во время преобразования в выражениях объектов и определениях переменных. Значения в одинарных кавычках, содержащие синтаксис поиска (подстановочные знаки, сравнения, нечеткий поиск, поиск по выражениям, модификаторы поиска или составные операторы поиска), преобразуются в двойные кавычки. Значения в одинарных кавычках в числовых полях, которые не содержат синтаксиса поиска, помечаются для ручной проверки, но не исправляются автоматически. Экспериментальное исправление для неэкранированных строковых значений также доступно, но по умолчанию отключено — передайте `--fixUnquotedSetValues` чтобы включить его. Исправления применяются с использованием позиционной замены только в списках значений модификаторов набора — имена полей, имена функций и другой текст выражений никогда не изменяются. Каждое исправление имеет независимый переключатель (`--noFixSingleQuotedSearch`, `--fixUnquotedSetValues`). Для получения дополнительной информации см. [Справочник аргументов](https://help.qlik.com/ru-RU/migration/Content/Qv2qsMigration/command-line-interface/argument-reference.htm).

Результаты отображаются в Результаты котирования выражений разделе сводки консоли, на подвкладке Выражение панели мониторинга сводки для руководителей, и на листе Expression\_Findings отчета Excel. Каждое обнаружение включает Статус индикатор: Автоматически исправлено (исправлено во время преобразования), Требует проверки (требует ручного внимания) или Исправление недоступно (неподдерживаемая функция). Сводная панель мониторинга предоставляет переключатель фильтра, чтобы скрыть автоматически исправленные строки и сосредоточиться на элементах, которые все еще требуют внимания. Дополнительные сведения о различиях в синтаксисе анализа наборов см. в разделе [Анализ наборов](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/set-analysis-set-operators-modifiers.htm) в справке Qlik Cloud.

Неподдерживаемые функции диаграммы

QV2QS сканирует все выражения объектов (измерения, меры, условия отображения, выражения цвета, текстовые выражения) и определения переменных на предмет функций диаграмм QlikView, которые не поддерживаются в Qlik Sense. Сканер сопоставляет вызовы функций с необязательными пробелами или символами новой строки между именем функции и открывающей скобкой. Имена функций внутри строковых литералов исключены.

Обнаружены следующие функции:

| Функция | Описание |
| --- | --- |
| GetCurrentField | Возвращает имя активного поля в текущем объекте. Не поддерживается в Qlik Sense. См. [Функции полей](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/field-functions-charts.htm) в Qlik Cloud для поддерживаемых альтернатив. |
| GetExtendedProperty | Получает метаданные связанного объекта. Не поддерживается в Qlik Sense. См. [Функции полей](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/field-functions-charts.htm) в Qlik Cloud для поддерживаемых альтернатив. |
| Входные данные | Получает введенные пользователем значения полей ввода. Не поддерживается в Qlik Sense. |
| InputAvg | Вычисляет среднее значение значений входных полей. Не поддерживается в Qlik Sense. |
| InputSum | Вычисляет сумму значений полей ввода. Не поддерживается в Qlik Sense. |
| MsgBox | Отображает диалоговое окно. Не поддерживается в Qlik Sense. |
| NoOfReports | Возвращает количество объектов отчета. Не поддерживается в Qlik Sense. |
| ReportComment | Возвращает комментарий отчета. Не поддерживается в Qlik Sense. |
| ReportId | Возвращает идентификатор отчета. Не поддерживается в Qlik Sense. |
| ReportName | Возвращает имя отчета. Не поддерживается в Qlik Sense. |
| ReportNumber | Возвращает номер отчета. Не поддерживается в Qlik Sense. |

Результаты обнаружения неподдерживаемых функций появляются наряду с результатами обнаружения кавычек в анализе множеств в Expression\_Findings рабочем листе и в Potential expression issues разделе сводки консоли.

Закладки разработчика

QV2QS читает `DocInternals.xml` и перечисляет все закладки, созданные разработчиками. Для каждой закладки анализ сообщает о выбранных полях, области действия (глобальной или для конкретного листа) и о том, сохранено ли состояние макета. Закладки должны быть вручную воссозданы в Qlik Sense.

Примечание к информации

Закладки на уровне сервера (общие и личные) не обнаруживаются из папки PRJ.

## Расчет размера SaaS

QV2QS считывает двоичный файл QVW для оценки базового объема занимаемой ОЗУ приложения. Оценка основана на `ByteSize` метаданных, встроенных в описания таблиц и полей.

Примечание к информации

Метаданные ByteSize доступны только в файлах QVW, сохраненных с помощью QlikView 12.30 или более поздней версии (ноябрь 2018 г.). Если метаданные отсутствуют, уровень размера сообщается как Неизвестный.

QV2QS классифицирует приложение в один из следующих уровней на основе базового потребления ОЗУ.

| Уровень | Порог | Действие |
| --- | --- | --- |
| Стандартный | До 5 ГБ | Специальное действие не требуется. |
| Крупные Приложения | До 50 ГБ | Разверните в пространство с включенной поддержкой больших приложений. |
| Требуется оптимизация | Свыше 50 ГБ | Проконсультируйтесь с администратором Qlik или партнером Qlik перед миграцией. |

Таблица сведений о размере на листе «Анализ» также сообщает количество таблиц и полей (исключая системные таблицы и поля). Подробные сведения о кратности полей, количестве строк в таблицах и размере объектов в байтах см. на листах Data\_Model\_Fields и Data\_Model\_Tables в отчете Excel.

## Уровни достоверности

Каждое обнаружение Скрипта загрузки включает уровень достоверности, который указывает на вероятность подлинной проблемы совместимости.

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

Результаты анализа свойств документа и результаты анализа макросов не имеют уровней достоверности, поскольку эти результаты основаны на явных флагах XML, а не на сопоставлении с образцом.

## Ограничения анализа

Анализ сканирует только папку PRJ и бинарный файл QVW. Сканер Скрипта загрузки обнаруживает неподдерживаемые операторы и функции в `LoadScript.txt`. Сканер Скрипта загрузки не проверяет выражения диаграмм.

Сканер выражений проверяет выражения диаграммы (измерения, меры, условия отображения, выражения цвета, текстовые выражения и определения переменных) на наличие шаблонов кавычек анализа множеств и неподдерживаемых вызовов функций. Сканер выражений не обнаруживает других категорий несовместимости в выражениях диаграммы.

Элементы, которые существуют на уровне QlikView Server, не обнаруживаются. Необнаруженные элементы включают серверные закладки, серверные объекты, настройки кластера, условия оповещений, определения отчетов и данные об использовании сеансов.

## Узнать больше

* [Результаты конверсии](https://help.qlik.com/ru-RU/migration/Content/Qv2qsMigration/conversion-results/conversion-outcomes.htm)
* [Отчет о конверсии](https://help.qlik.com/ru-RU/migration/Content/Qv2qsMigration/conversion-results/conversion-report.htm)
* [Справочник по преобразованию](https://help.qlik.com/ru-RU/migration/Content/Qv2qsMigration/conversion-reference/index.htm)
* [Известные ограничения](https://help.qlik.com/ru-RU/migration/Content/Qv2qsMigration/known-limitations/index.htm)