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

Сравнение временных отрезков: Немного теории

Давайте представим, что у вас есть выражение Sum(Sales), и вы хотите сделать сравнения по временным периодам:

  • Последние продажи
  • Прошлая неделя
  • Месяц-день
  • Год-к-году и т.д.

Итак, нам нужно будет создать, как минимум пять выражений для каждого временного отрезка, что потребует достаточно много дополнительной работы. Так, лучше работать через ссылки на выражение Sum(Sales). Если Sum(Sales) меняется, вам нужно обновить его лишь один раз, тогда все зависимые выражения изменятся.

НА ЗАМЕТКУ!

Основное выражение: Num(Sum({< [<AS OF TEXT>] %DataType={‘Sales’} >} «Net Sales»),’#,###.##’)

Выражение, которое ссылается на другое выражение: $(=only({1<%CC_Expression_LabelID={‘ProductMarginNet’}> } %CC_Expression_Expression)) , связанное выражение ‘ProductMarginNet’

Так, для 40 выражений с 10 временными периодами такое написание будет означать, что нам нужно изменить всего 400 выражений. Итак, для снижения вероятности ошибок в коде, я решил автоматизировать этот процесс. Когда у нас регулярно обновляются данные, мы увеличиваем вероятность ошибки при ручном вводе. Здесь же мы попросим QlikView выполнить работу самостоятельно.

Изменение во временных выражениях: Как автоматизировать

Все наши выражения у меня хранятся в рабочей книге Excel, у нас есть такие поля:

  • %LabelID
  • %CC_Expression
  • %CC_ReplicateReferenceCalculations_AsOf

На втором листе ‘As Of’, который содержит мета-данные для сравнений дат разный типов, поля имеют вид:

  • Префикс.
  • Замена текста.
  • Замена анализа множеств.

Процесс автоматизации работает следующим образом:

  1. Читаем данные по строкам в листе ‘As Of’ и мета-данные
  2. Загружаем все выражения, которые ссылаются на другие выражения, заменяем текст на анализ множеств.
  3. Создаем новое выражение с отличающимся ID.
  4. Затем последовательно читаем каждое выражение.
  5. Смотрим, сколько раз ссылается это выражение на другое.
  6. Затем меняем изначальный ID на новый.

Рассмотрим каждый этап подробно и разберем наиболее важные куски кода ниже:

  1. Читаем данные по строкам в листе ‘As Of’ и мета-данные

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

 2) Загружаем все выражения, которые ссылаются на другие выражения и заменяем текст на анализ множеств. 3) Создаем новое выражение с отличающимся ID

4) Затем последовательно читаем каждое выражение

5) Смотрим, сколько раз ссылается это выражение на другое 

6)  Затем меняем изначальный ID на новый

Друзья, на этом сегодняшняя автоматизация завершена. Хороших вам разработок!

Временные выражения — материалы для скачивания

[signinlocker]СКАЧАТЬ[/signinlocker]