Неофициальный форум пользователей Qlik Sense & Qlikview

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: LoryMax от 02 марта 2017, 08:30:27

Название: Сравнение текста в скрипте
Отправлено: LoryMax от 02 марта 2017, 08:30:27
Приветствую!
Есть таблица: объект, артикул, дата, элементы товародвижения, остатки. Хочу удалить при первоначальном и при инкрементальном проходе нули остатков перед первым товародвижением.

При инкрементальном чуть больше код, а именно:

T8:
                    load *
                        ,if(ARTICLE<>peek('ARTICLE') and Flag=1,1,
                              if(ARTICLE<>peek('ARTICLE') and TotalDailyRest<>0, 1,
                                  if(ARTICLE<>peek('ARTICLE') and Flag<>1, 0,
                                      if(ARTICLE=peek('ARTICLE') and TotalDailyRest<>0, 1,
                                          if(ARTICLE=peek('ARTICLE') and Peek(Flag) = 1,1,0))))) as Flag
                      Resident T7
                      order by OBJECT, ARTICLE, CREATEDAT
                    ;


Т.е. при Flag = 0 в дальшейшем удалятся строки.

Проблема, что нельзя использовать ARTICLE<>peek('ARTICLE') , т.к. не числа. Что можно взамен использовать? Артикулы как текст, вида 068770.
Название: Re: Сравнение текста в скрипте
Отправлено: millik от 06 марта 2017, 03:11:33
Смотрите в сторону функции мatch() и её производных: mixmatch() и wildmatch().

Будет что-то типа
мatch(ARTICLE,peek('ARTICLE'))=1  - если есть совпадения
мatch(ARTICLE,peek('ARTICLE'))=0  - если нет совпадений
Название: Re: Сравнение текста в скрипте
Отправлено: admin от 06 марта 2017, 08:14:40
Цитата: LoryMax от 02 марта  2017, 08:30:27  
Проблема, что нельзя использовать ARTICLE<>peek('ARTICLE') , т.к. не числа. Что можно взамен использовать? Артикулы как текст, вида 068770.
Стоп, почему нельзя использовать peek() с текстом?
Все прекрасно работает.

Следует учитывать сортировку и переходы по ключевым значениям верхнего уровня. В вашем примере это OBJECT.