Удаление строк из QVD файла

Автор PadijVD, 26 марта 2016, 12:38:58

« назад - далее »

PadijVD

Добрый день уважаемые знатоки!
Опять нужен Ваш совет:
Есть таблица сохраненная в QVD файл, формируется с помощью инкрементальной загрузки, на каждый месяц, далее все это загружается в рабочую таблицу (данных очень много >1000000 обработанных файлов) необходимо удалять некорректные данные по  списку допустим по полю "№" без перезагрузке всех данных.
в идеале создать таблицу xls и из нее взять нужные номера и удалить эти данные.

admin

Привет.
Можно создать таблицу с требуемыми исключениями и при загрузке проверять на существование exists() в ней.

PadijVD

Привет, спасибо за совет попробую и отпишусь.

PadijVD

Цитата: admin от 28 марта  2016, 05:25:24  
Привет.
Можно создать таблицу с требуемыми исключениями и при загрузке проверять на существование exists() в ней.

Привет, спасибо за совет! Реализовал так как ты и посоветовал, все прекрасно работает!

LoryMax

Не хочу создавать новую тему.

Хочу очистить таблицу остатков от избыточных данных (а это - данные по дате-объекту-артикулу с нулевыми остатками за тот период, когда товар еще не был заведен).  Хочу сделать без цикла, в рамках выборки из таблицы. Возможно ли такое?
Есть поле с дневным движением (DR). Вижу схему такую: если артикул текущей записи тот же самый, DR<>0 - запись загружаем. Но после первого движения будут и  DR=0, которые уже тоже нужно вносить. Как здесь быть?

admin

Привет,
используйте межзаписные функции peek() , previous().
И помните, что сортировка в таблице работает только при резидентной загрузке.

LoryMax

про эти функции в курсе. только не пойму, возможно ли вообще применить, если можно - то как?. Дело в том, что мне нужно сохранить записи с DR=0 после того момента во времени, когда было первое движение товара. чтобы данные после 18.02.15 тоже загрузились.

admin

Используйте временное флаговое поле.
Началось движение - ставим 1 и т.д. до конца. Останутся 0 там где движение еще не началось.

LoryMax

admin, спасибо!

Работает так:

T8:
load ARTICLE
    ,DATER
    ,OBJECT
    ,DR //дневное движение
    ,SumRest //остаток на текущий день
    from lib://QlikFolderU/QlikRest8.qvd (qvd);

T81:
load *
    ,if(peek(ARTICLE)= ARTICLE and DR<>0, 1, if(peek(ARTICLE)= ARTICLE and Peek(Flag) = 1,1,0)) as Flag
    resident T8;

drop table T8;
   
    T82:
    load ARTICLE
    ,DATER
    ,OBJECT
    ,DR
    ,SumRest
    Resident T81
    where Flag = 1;
    drop table T81;

В итоге получаем, что данные по товару начинаются со дня первого движения.

Почему в Т82 нельзя использовать звездочку в load? ошибок нет, но и данных нет. Укоротить этот путь из 3х таблиц как то можно?

Яндекс.Метрика