Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Добрый день!
Столкнулся с тем, что в работе использую много таблиц. источники часто обновляются, поэтому QVD использовать не могу, - надо обновлять таблицы с сервера. Запросы тяжёлые.. . Но не все таблицы разом надо обновлять, а избранные.
Решил сделать этакий "менеджер" частичной загрузки, чтобы обновлять только те таблицы, которые я захочу.. не меняя при этом каждый раз скрипт загрузки.
Я столкнулся с небольшой проблемкой по самому Replace (таблица не перезагружалась, а добавлялась с постфиксом "-1", "-2" итд.. пришлось использовать Drop Table (с set errormode=0 и принудительно использовать NoConcatenate) - но то мелочи..
И большой неприятностью для меня было, что не получилось использовать переменную для впихивания Replace в нужные мне участки кода...
**************************************
Привет:
$(v1)
NoConcatenate LOAD * INLINE [
Персонаж, Оружие
Зилибоба, Карандаши
Арканоид, Звезда
Тельнар, Луч
Алуриель, Сферы
];
*******************************************
При этом в переменную v1 что я только не пихал, чтобы как-то сделать вывод Replace по нужному мне условию..
Взял одну таблицу.. при выборе поля, условная переменная должна возвращать Replace в скрипт. но не возвращает
=if(GetFieldSelections("$Table")='Привет','Replace')
Пробовал баловаться со знаком "=" в переменной.. в скрипте.. вложенные $() делал - в скрипт не хочет выводиться результат формулы.. что я не так делаю?
Нужно, чтобы в скрипт прописывалось Replace при выборе нужного мне поля..
Я считал что это просто .. да и логично: выбрал нужное поле, нажал CTRL+SHIFT+R и перезагрузилась нужная таблица..
Помогите, кто знает как это реализовать..
Логику я потом допилю, усовершенствую.. но без этого шага ничего не получится..
Заранее спасибо
Нет.. мне это не подходит.. тут дело даже не в загрузке данных.. а в обработке скрипта на сервере.. чтобы проверить время изменения, сервер всё равно прилично думает..
Фишка была в том, чтобы при изменении таблицы на сервере (Например, IT позвонил и сказал что исправил багнутую таблицу), я мог, не залезая в скрипт, парой движений мышки перезагрузить нужную мне таблицу. (Например, у меня их 20 и каждая из них отрабатывает от 5 до 50 минут)
Так вот, чтобы каждый раз в скрипт не лезть и не ставить Replace для частичной загрузки в скрипт. мне и нужен был механизм прописывания Replace в заранее расставленные переменные..
Короче - сейчас подумал. . мозги сообразили как решить эту проблему.. немного другим путём. .так что если кто знает, как значение ВЫЧИСЛЯЕМОЙ переменной пропихнуть в скрипт - пишите, буду рад. .
А решение состоит в следующем:
Формулы в переменной скрипта не воспринимаются.. но воспринимаются Простые значения..
Поэтому, раз Магомед не идёт к горе, Гора пошла к Магомеду:
Я создал кнопку, которая устанавливает переменные по нужной мне формуле, записывая в них статическое значение Replace или '//' в зависимости от выбранного поля..
***************************************************************
$(v2)
Дюшман:
LOAD * INLINE [
Аф, Оф
Зилибоба, Карандаши
Арканоид, Звезда
Тельнар, Луч
Алуриель, Сферы
];
Привет:
$(v1)
LOAD * INLINE [
Персонаж, Оружие
Зилибоба, Карандаши
Арканоид, Звезда
Тельнар, Луч
Алуриель, Сферы
];
************************************************************************
Выражение для v1:
=if(GetFieldSelections($Table)like '*Привет*','Replace','//')
Выражение для v2:
=if(GetFieldSelections($Table)like '*Дюшман*','Replace','//')
И так далее - сколько у вас там таблиц
Таким образом, Выбрав нужные поля-таблицы, нажав кнопку установки переменных, при нажатии CTRL+SHIFT+R загрузится именно то, что Вам надо.
Ну. .в своём приложении, конечно, покрасивее сделаю, но Принцип ясен. Функцию в два движения мыши выполняет (можно выбрать как одно, так и несколько полей)
Я не знаю.. считать ли этот вопрос решённым? всё-таки механизм передачи формульной переменной в скрипт мне ещё не ясен..
Ставьте лайки, делитесь идеями
Привет
Интересно
Не пробовали использовать доступные методы инкрементной загрузки данных(при этом в базе должна фиксироваться дата/время изменения)?
Например:
Загрузка новых и обновленных записей с помощью инкрементальной загрузки ‒ Qlik Sense
Владимир,
Вы можете хранить оператор Replace или любой кусок кода в текстовых файлах и вызывать с помощью include или Must_Include.
if v1='Replace' then
$(include = 'путь к файлу 1')
else
$(include = 'путь к файлу 2')
end if;
Не самый изящный вариант, но вдруг пригодится.
Нет.. мне это не подходит.. тут дело даже не в загрузке данных.. а в обработке скрипта на сервере.. чтобы проверить время изменения, сервер всё равно прилично думает..
Фишка была в том, чтобы при изменении таблицы на сервере (Например, IT позвонил и сказал что исправил багнутую таблицу), я мог, не залезая в скрипт, парой движений мышки перезагрузить нужную мне таблицу. (Например, у меня их 20 и каждая из них отрабатывает от 5 до 50 минут)
Так вот, чтобы каждый раз в скрипт не лезть и не ставить Replace для частичной загрузки в скрипт. мне и нужен был механизм прописывания Replace в заранее расставленные переменные..
Короче - сейчас подумал. . мозги сообразили как решить эту проблему.. немного другим путём. .так что если кто знает, как значение ВЫЧИСЛЯЕМОЙ переменной пропихнуть в скрипт - пишите, буду рад. .
А решение состоит в следующем:
Формулы в переменной скрипта не воспринимаются.. но воспринимаются Простые значения..
Поэтому, раз Магомед не идёт к горе, Гора пошла к Магомеду:
Я создал кнопку, которая устанавливает переменные по нужной мне формуле, записывая в них статическое значение Replace или '//' в зависимости от выбранного поля..
***************************************************************
$(v2)
Дюшман:
LOAD * INLINE [
Аф, Оф
Зилибоба, Карандаши
Арканоид, Звезда
Тельнар, Луч
Алуриель, Сферы
];
Привет:
$(v1)
LOAD * INLINE [
Персонаж, Оружие
Зилибоба, Карандаши
Арканоид, Звезда
Тельнар, Луч
Алуриель, Сферы
];
************************************************************************
Выражение для v1:
=if(GetFieldSelections($Table)like '*Привет*','Replace','//')
Выражение для v2:
=if(GetFieldSelections($Table)like '*Дюшман*','Replace','//')
И так далее - сколько у вас там таблиц
Таким образом, Выбрав нужные поля-таблицы, нажав кнопку установки переменных, при нажатии CTRL+SHIFT+R загрузится именно то, что Вам надо.
Ну. .в своём приложении, конечно, покрасивее сделаю, но Принцип ясен. Функцию в два движения мыши выполняет (можно выбрать как одно, так и несколько полей)
Я не знаю.. считать ли этот вопрос решённым? всё-таки механизм передачи формульной переменной в скрипт мне ещё не ясен..
Ставьте лайки, делитесь идеями