Как не удивительно, но иногда для новичка загрузка данных в Qlik – не простая задача. Есть ряд типичных ошибок, которых можно легко избежать, поэтому ниже перечислю наиболее типичные из ошибок загрузки данных в скрипте Qlikview и расскажу, как их решить.
1. Управление запятыми
Предыстория: Написал комментарии к полям.
Вероятная причина: Забыл удалить запятую там, где сейчас находится последнее поле
Это очень частая ошибка. Понять, что причина ошибки именно в этом можно из сообщения об ошибке скрипта. Нам нужны запятые между именами полей в списке, а после последнего поля запятую мы удаляем.
Несмотря на удаленную запятую, нам все еще будет нужна точка с запятой.
НА ЗАМЕТКУ! Изучите основные правила синтаксиса скрипта, где ставится двоеточие, точка с запятой, кавычки и запятые.
2. Пропущена директория QVD
Предыстория: У меня нет описания ошибки или написано «Невозможно открыть файл корректно…»
Вероятная причина: Ссылка на несуществующую директорию с файлом.
Эта ошибка в скрипте QlikView, как правило, возникает, если мы пытаемся сохранить файл QVD в папку, которой не существует. Всегда создавайте папку для QVD, прежде чем запускать эту команду в скрипте QlikView.
Для решения этой задачи нам нужно просто добавить папку в нужную директорию, чтобы Qlik нашел путь, когда выполняется скрипт.
3. Забыл добавить дополнительные таблицы
Предыстория: Почему у меня вдруг появились синтетические ключи?
Вероятная причина: Не перетащил таблицы с помощью resident load.
Существует много случаев, когда нам нужно загрузить таблицу уже из ранее загруженных таблиц. Если мы добавили в новой таблице такие поля, которые хоть немного отличаются от предшествующих, то система не свяжет их между собой. Скорее всего, именно поэтому будет создан новый и длинный синтетический ключ. Если это похоже на ваш случай, то с большой вероятностью вы забыли добавить в скрипт первоначальную таблицу.
Вот наш скрипт. Ничего ли мы не забыли? Отметьте, что у нас появился синтетический ключ, который нам и не нужен.
Обновленный скрипт содержит выражение, чтобы удалить оригинальную таблицу, после чего лишние синтетические ключи будут удалены.
4. Таблицы не объединились
Предыстория: Я потерял новую версию таблицы.
Вероятная причина: Автоматическое объединение в процессе resident load.
Эта ошибка связана с первой вариантом ошибки работы с resident load, описанным выше. В этом же случае возникает вопрос – что случилось с моей таблице: нет ни старой, ни новой таблицы?
Все, что нам нужно помнить в этом случай, так это то, что Qlik загружает новую таблицу, которая содержит те же поля, что предыдущая. Новая таблица будет объединена со старой. Если мы добавим выражение noconcatenate, то мы решим возникшую проблему, сообщив Qlik-у, что нам не нужно объединять таблицы.
Простое добавление noconcatenate решит возникшую проблему:
5. Перекрестное соединение таблиц
Предыстория: Перезагрузка данных зависла.
Вероятная причина: Объединение без ключей.
Когда у меня впервые возникла такая ошибка, то я и не знал, что делать. Выполнение скрипта зависло и все, ничего не работает, а выполнение скрипта висело уже пять минут и ничего не менялось, что очень не похоже на QlikView. Что в это время делал Qlik? Система старательно пыталась найти связи между таблицами.
Поэтому, используя join, убедитесь, что Qlik, действительно, найдет поля с одинаковым названием и сможет объединить их. Если же поля не совпадают, то Qlik начнет связывать каждую строку одной таблицы с каждой строкой другой таблицы, что, конечно, приведет к подвисанию скрипта.
Итак, у нас была таблица 1: 100,000 строк, таблица 2: 5,000 строк
Итоговая объединенная таблица: 500,000,000
Qlik объединил каждую строку одной таблицы с другой.
Обратите внимание, что поля не имеют идентичного названия.
В этой случае у нас получилась таблица с 40 млн. строк (20,000 x 20,000)
После внесения изменений в название полей так, чтобы он соответствовали друг другу, у меня получилось 20,000 строк.
6. Повторение фактов после объединения
Предыстория: Моя объединенная таблица имеет больше записей, чем я запустил.
Вероятная причина: Повторяющиеся ключи
Представим ситуацию, что нам нужно объединить две таблицы. В случае если в таблице есть повторы, итоговая таблица будет иметь эти повторы. Для решения этой задачи стоит использовать функцию lastvalue с group by, чтобы убедиться, что нужное поле будет использоваться только один раз ID. Для того чтобы убедиться в корректности объединения строк, смотрите в обзоре таблиц, сколько строк было и стало после объединения.
Это типичное объединение таблиц, но здесь есть и одна проблема.
У нас должно получиться только 19 транзакций, но поскольку в данных Customer ID повторяется, у нас получилось 26 строк.
А вот уже откорректированный код.
Теперь мы вернулись к 19 строкам.
На этом все на сегодня. Практичных вам разработок с Qlik!
Свежие комментарии