Выгрузка таблицы в QVD с помощью скрипта

Автор Camus, 16 января 2021, 01:49:58

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

Camus

Доброго времени суток!
QlikView пользуюсь в личных целях, самоучка)
Появилась задача:
Есть прямая таблица, в ней расчёты. Данные в ней обновляются при каждой загрузке. Есть поле Today().
Нужно выгружать данные при каждой загрузки во внешнюю таблицу (в идеале в QVD), чтобы данные накапливались и потом уже загружать данные обратно из этой таблицы.

Добавлять последние данные через INSERT ONLY я научился, но не получается выгрузить саму таблицу в QVD с помощью скрипта.
Пробовал несколько вариантов:
sub ChartToQVD 
 
    set obj = ActiveDocument.GetSheetObject("CH85") 
 
    obj.ExportEx "\\Mac\Home\Desktop\expenses\nvp.csv", 4 
 
end sub
и такой
sub ExpQVD

QVDFile = "\\Mac\Home\Desktop\expenses\nvp.csv"

set obj = ActiveDocument.GetSheetObject("CH85")

obj.ExportEx QVDFile, 4

ActiveDocument.PartialReload

End Sub
И ни один не запускается.
Можно конечно настроить экспорт в CSV через кнопку, но это полумера и файл со временем начнёт весить ТБ.


Также прошу подсказать решение по архитектуре.
На данный момент у меня получается многоэтапная выгрузка и загрузка:
1.загружаю данные обновляю таблицу с расчётами
2.выгружаю данные во временную таблицу CSV
3.загружаю временную таблицу
4.из временной таблицы загружаю в основную таблицу с накопленными данными
5.из основной таблицы подгружаю данные на лист

Можно как-то обойти пункт 1,2,3 и сразу загружать новые данные в основную таблицу?

Буду рад любым предложением касательно обоих вопросов)

govorun

Чета у меня цитаты не работают.
"Есть прямая таблица, в ней расчёты. Данные в ней обновляются при каждой загрузке"

Я с QV ни разу не сталкивался, но похоже начинать нужно отсюда.
Откуда попадают данные в прямую таблицу - оттуда (там) и нужно организовывать хранение данных.
Наверное, прежде чем попасть в прямую таблицу, данные обрабатываются в скрипте загрузки. Вот там и попробовать применить команду STORE.
А после и решение по архитектуре придет само-собой.

Uunit

#2
Цитировать1.загружаю данные обновляю таблицу с расчётами
2.выгружаю данные во временную таблицу CSV
3.загружаю временную таблицу
4.из временной таблицы загружаю в основную таблицу с накопленными данными
5.из основной таблицы подгружаю данные на лист
Всё это можно сделать на этапе загрузки пункта 1

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

Ниже пример создания QVD файла.
STORE "Название таблицы которую нужно сохранить" into D:\"Куда хотим сохранить".qvd (qvd);
1. Необходимо перенести расчёт вашей прямой таблицы в Скрипт (т.е. производить расчёт на этапе загрузки)
2. Полученную таблицу сохраняем в QVD.
3. Временно помечаем скрипт пункт 1 как комментарий (Он нам пригодится)
4. Обращаемся к созданyому QVD файлу, и определяем максимальную дату. Это дата, с которой у вам необходимо создать временный расчёт (Ваш пункт 3). Полученную дату загоняем в переменную.
5. Теперь возвращаемся к Таблице из пункта 1 и настраиваем её так, чтобы расчёты проводились только для даты где переменная больше.

осталось расположить расчёты в нужно порядке.
1) Загружаем Имеющийся QVD.
2) Определяем макс дату в QVD и записываем её в переменную.
3) Создаём временную таблицу (Таблица из пункта 5) и присоединяем её к ранее загруженной QVD.
4) Записываем новую QVD.

Готово.

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