Сегодня хочу поделиться с вами способом быстрого сбора статистики из системы QlikView, которая будет рассказывать, какие QVD-файлы были записаны конкретным приложением, сколько занимает времени создание QVD-файла, сколько было записано строк и сколько полей в каждой таблице.
Предыстория: Сбор статистики QVD
Очевидно, что ответы на вышепоставленные вопросы помогают лучше понимать схему работы BI-инструмента, а также отследить возможные логические ошибки в скриптах QlikView.
Кроме того, мы будем записывать собранную статистику по QVD-файлам в другой QVD-файл, поэтому мы сможем использовать ее последующих загрузках.
Как собрать статистику
Я использую блоки кода, которые затем легко встроить в любой скрипт и настроить, исходя из поставленной цели. Обычно код состоит из таких элементов как:
- Установка необходимых глобальных переменных и структуры таблицы со статистикой.
- Установка операций создания таблицы статистики.
- Изменение времени запуска и имени таблицы каждый раз, когда запускаем новый QVD.
- Вызов подпрограммы.
Шаг 1. Установка необходимых глобальных переменных и структуры таблицы со статистикой
Сначала создаем любые переменные, которые необходимо собрать в нашу статистику. В этом примере я использую переменную, чтобы определить директорию, имя среды, источник и путь моей QVD-статистики. Вот кусок кода, который должен предшествовать любой загрузке данных.
1 2 3 4 5 6 7 8 9 |
//dev setvDir = ‘C:UsersAaronDocumentsQlikView AppsBlog AppsStatistics Collection’; setvEnv = ‘Dev’; //prod //set vDir = ‘D:QlikView DocumentsProductionSales’; // Set variables for qvd naming setvDivision= ‘QAP’; setvSource = ‘BAAN’;LETStatisticsPath = ‘$(vDir)ETL_Statistics_$(vDivision)_$(vSource).qvd’; |
Также мы будем смотреть уже существующую QVD-статистику, если она не найдена, то она будет создана:
1 2 3 4 5 6 7 8 9 |
IFFileSize(‘$(StatisticsPath)’) > 0 THEN// The Statistics QVD already exists. ELSE// The Statistics QVD needs to be created Statistics: LOAD * INLINE[ TableName, Division, Source, ReloadedDate, StartTime, EndTime, Duration, Records, Fields , ];STORE Statistics INTO$(StatisticsPath)(qvd); DROPTABLE Statistics; ENDIF |
Шаг 2. Создание подпрограммы, которая создает таблицу статистики
Затем мы создаем подпрограмму, которая генерирует статистику каждый раз, когда мы загружаем новые данные в QVD-файл. Этот скрипт записывает все нужные данные из любой загрузки, добавляет в текущие записи статистки, а затем все сохраняет в QVD-файл.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
subStats // Call this script between qvd store and drop table commands to gather statistics for the qvd. // There must be a vStartTime and a vTable variable LETvEndTime = NOW(); LETvRecords = NoOfRows(‘$(vTable)’); LETvFields = NoOfFields(‘$(vTable)’); Statistics: LOAD * FROM$(StatisticsPath)(qvd) WHERETableName <> ‘$(vTable)’; JOIN (Statistics) LOADDISTINCT ‘$(vTable)’ ASTableName, ‘$(vDivision)’ ASDivision, ‘$(vSource)’ asSource, DATE(NOW())ASReloadedDate, ‘$(vStartTime)’ ASStartTime, ‘$(vEndTime)’ ASEndTime, INTERVAL(NUM(‘$(vEndTime)’) – NUM(‘$(vStartTime)’),’hh:mm:ss’) ASDuration,$(vRecords)ASRecords, $(vFields)asFields RESIDENT Statistics; STORE Statistics INTO$(StatisticsPath)(qvd); DROPTABLE Statistics;endsub |
Шаг 3. Изменение времени запуска и имени таблицы каждый раз, когда запускается новый QVD
Итак, нам нужно создать некоторые переменные перед каждой загрузкой, а затем запустить подпрограмму после каждой загрузки. Используя такой подход, мы можем собирать статистику после каждого запуска QVD-файла.
1 2 3 |
// Append this script to the start of each qvd creation. LETvStartTime = NOW(); SETvTable = ‘ETL_Sales_Header’; |
Шаг 4. Вызов подпрограммы
Наконец, после выполнения всех описанных выше действий, мы можем запустить подпрограмму, которая записывает конечные переменные.
1 2 |
// call subroutine to gather statistics for the qvd. callStats; |
Разместите этот код в конце вашего скрипта.
Соображения
Существует много способов оптимизации сбора данных. Надеюсь, что предложенный выше способ будет для вас полезен. Код можно изменять, в зависимости от вашей задачи.
Надеюсь, вам была полезна эта статья!
Расскажите в комментариях, какие вы используете способы сбора статистики приложений Qlik!
Свежие комментарии