19 сентября 2009 г.

Переменные в QlikView

И снова здравствуйте, коллеги.
Сегодня я бы хотел немного поговорить о переменных. Изначально целью данного поста являлось желание раскрыть принципиальную разницу между объявлениями переменных при помощи операторов SET и LET. Однако, аппетит,  что называется, приходит во время еды и изначальные рамки поста были слегка пересмотрены в сторону их увеличения.


И так начинаем наш обзор…
Как же объявить(создать) новую переменную внутри документа?
Это можно сделать несколькими способами:

  1. Использовать операторы SET и LET в редакторе скрипта загрузки данных;
  2. Использовать визуальный редактор переменных (Обозреватель переменных);
  3. Использовать функции API (см. документ APIguide.qvw из стандартной поставки)

Давайте рассмотрим их более подробно…

Первый способ самый простой и понятный. При написании скрипта загрузки мы объявляем необходимые нам переменные посредством использования операторов SET или LET.
Оператор SET обычно используется когда необходимо описать какую либо не вычисляемую переменную, например путь к директории, название файла и т.п.
Оператор LET употребляется для определения переменных, которые необходимо вычислить в ходе выполнения скрипта загрузки.
Пример1: Показать...

Пример2: Показать...
Как видно из предыдущего примера, переменная str1 объявлена как не вычисляемая. Для того, чтобы все-таки произвести вычисление переменной определенной при помощи оператора SET нам необходимо использовать конструкцию вида: $(varName).
Пример3: Показать...
Вот собственно основное отличие этих операторов.
Примечание:
Оператор LET не является обязательным при объявлении вычисляемых переменных внутри скрипта загрузки. Поэтому след. пример скрипта также имеет право на свое существование:
LET Y = 2+3;
Z = Y-1;
Результат переменной Z будет равен 4.
Второй способ не требует каких-либо дополнительных знаний в написании скриптов и представляет из себя работу с обозревателем переменных. Вызывается данный обозреватель через меню Настройки/Обозреватель переменных (или “горячими” клавишами Ctrl + Alt + V).
VariableOverview
Здесь легко можно создавать новые, изменять или удалять существующие в документе переменные.
И третий способ заключается в использовании Automation API функций, в частности функции CreateVariable класса Document (см. APIguide.qvw). Пример:
ActiveDocument.CreateVariable "MyVar"
Важно:
Если первым символом в значении переменной будет стоять символ “=”, то QlikView будет пытаться произвести вычисление значения этой переменной при ее использовании в Edit Expression (Редактор выражения) и вернет результат этого вычисления. Это замечание относится ко всем переменным вне зависимости от способа их создания. Таким образом если мы реализуем скрипт вида:
SET s = ‘=1+2’;
затем откроем Обозреватель переменных, то увидим в качестве значения строку  ‘=1+2’ (см. скриншот выше). Однако, если мы используем эту переменную s, например, в объекте Text Object, то в результате мы получим вычисление формулы описанной в переменной s и в Text Object’е мы увидим цифру 3.

14 комментариев:

  1. Спасибо
    Обновляйте блог, очень мало информации

    ОтветитьУдалить
  2. согласен, мало. Что-то я совсем забросил это дело. Буду пытаться наверстать упущенное... :) Вот еще бы понять что именно интересно, о чем так сказать в первую очередь хочется почитать.

    ОтветитьУдалить
  3. ПримерX: Показать...
    не работают ни в одном из браузеров
    пофиксите плиз

    ОтветитьУдалить
  4. не работают ссылки на примеры

    ОтветитьУдалить
  5. Да, спасибо. После смены дизайна много чего полетело :( Исправил...

    ОтветитьУдалить
  6. "Обозреватель переменных, то увидим в качестве значения строку ‘=1+2’ (см. скриншот выше). Однако, если мы используем эту переменную s, например, в объекте Text Object, то в результате мы получим вычисление формулы описанной в переменной s и в Text Object’е мы увидим цифру 3."

    за это отдельно большое спасибо!

    ОтветитьУдалить
  7. Ищу инструктора по QlikView.
    Нужно с нуля научиться пользоваться программой в сжатые сроки. Обучение возможно по скайпу или стационарно. Цены и условия готов обсуждать.
    +79032778572

    ОтветитьУдалить
  8. Добры день. Только начал изучать QlikView, подскажите пожалуйста, как можно переопределить переменную.
    Пример:
    Есть переменная, при загрузке полей в зависимости от условий, она должна принимать разные значения.

    ОтветитьУдалить
  9. Приветствую. Не очень понял вопрос... В любом случае, чтобы переопределить значение переменной в скрипте вы можете использовать операторы LET или SET (разница описана в данном посте)

    ОтветитьУдалить
    Ответы
    1. Ну вот ну например:
      Если я объявлю переменную, а потом при загрузке полей как переопределить?

      SET перем = "Текст",

      Load

      поле1,
      поле2,
      поле3,
      IF (Поле1 = 1, перем = Поле2, перем=Поле3) as Поле4

      Ну вот как-то так. Подскажите как это правильно реализовать в QV?

      Удалить
    2. Так делать нельзя. переменная это не массив значений, там можно хранить только одно значение. После выполнения LOAD вы можете рассчитать одно значение, но не для каждой строки таблицы (как вы пытаетесь). Не ясна цель конечная, поэтому сложно что-то подсказать. возможно вам нужно определять значение переменной не в скрипте, а уже в дизайне (Layout) в зависимости от текущей выборке по "поле1".

      Удалить
  10. Добрый день. При загрузке данных из текстового файла значения одного из атрибутов указывается со скобкой, из за особенностей текстового файла. Пример:
    123(
    2224(
    12(
    Вопрос. Как можно убрать скобку? Что прописать?

    ОтветитьУдалить
    Ответы
    1. Павел, здравствуйте.
      Вариантов масса...
      1) Left(FieldName, Len(FieldName)-1) as FieldName
      2) purgechar(FieldName, '(') as FieldName
      3)SubField(FieldName, '(', 1) as FieldName
      и др...

      Удалить
  11. ВСЕ ПРОЧИТАЙТЕ НАСТОЯЩЕЕ ОТЗЫВ О том, КАК Я ПОЛУЧИЛ СВОЙ КРЕДИТ ОТ КОМПАНИИ LEGIT И ДОВЕРЕННОЙ КРЕДИТНОЙ СРЕДИ Меня зовут Kjerstin Lis, я искал кредит для погашения своих долгов, все, кого я встречал, мошенничали и брали свои деньги, пока я наконец не встретил мистера Бенджамина Брейл Ли Он смог дать мне кредит в размере 450 000 рублей. Он также помог другим моим коллегам. Я говорю как самый счастливый человек во всем мире сегодня, и я сказал себе, что любой кредитор, который спасает мою семью от нашей бедной ситуации, я скажу имя всему миру, и я так счастлив сказать, что моя семья вернулся навсегда, потому что я нуждался в кредите, чтобы начать свою жизнь заново, потому что я одинокая мама с 3 детьми, и весь мир, казалось, висел на мне, пока я не имел в виду, что БОГ послал кредитора, который изменил мою жизнь и член моей семьи, БОЖИЙ кредитор, мистер Бенджамин, он был Спасителем БОГом, посланным для спасения моей семьи, и сначала я подумал, что это будет невозможно, пока я не получу кредит, я пригласил его к себе в семью -все вечеринка, от которой он не отказался, и я посоветую всем, кто действительно нуждается в кредите, связаться с г-ном Бенджамином Брейлом Ли по электронной почте (lfdsloans@outlook.com), потому что он самый понимающий и добрый кредитор. когда-либо встречал с заботливым сердцем. Он не знает, что я делаю это, распространяя свою добрую волю ко мне, но я чувствую, что должен поделиться этим со всеми вами, чтобы освободить себя от мошенников, пожалуйста, остерегайтесь подделок и свяжитесь с правильной кредитной компанией. com или whatsapp + 1-989-394-3740. ,

    ОтветитьУдалить