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

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: SEGA от 26 февраля 2018, 11:39:17

Название: Разность между двумя полями в разных таблицах
Отправлено: SEGA от 26 февраля 2018, 11:39:17
Добрый день! Я не давно начал знакомится с Qlik и не много есть не понятно.
Например задача такая мне нужно посчитать остаток количестовоТовара и колРеалТовар
посчитать разницу между ними колТ - КолРеалТовар
Все обыскал, то ли  не могу понять то ли в qliki реально нету функции разницы  помогите с скриптом что бы данные из одно поле с именем колРеал Товар отнималась от КолТ и выводилость в поле Остаток

буду очень признателен
Название: Re: Разность между двумя полями в разных таблицах
Отправлено: admin от 26 февраля 2018, 12:06:58
Привет, чтобы сформировать новое поле , необходимо связать таблицы по ключевым полям и в запросе просто сформировать новое поле. Ничего сложного.

Здесь все хорошо описано (https://help.qlik.com/ru-RU/sense/September2017/Content/Tutorials.htm)
Название: Re: Разность между двумя полями в разных таблицах
Отправлено: SEGA от 26 февраля 2018, 12:30:28
Они у меня взаимосвязаны по ключу штрихкод новое поле сформировано
меня интересует сам скрипт проведения разницы между полями
Название: Re: Разность между двумя полями в разных таблицах
Отправлено: SEGA от 26 февраля 2018, 12:35:20
Например

штрихкод  ,   кол проданного товара,  количество товара
12314123213               10                           20
12312412341                2                             12

и я хотел бы получить разность в поле остаток
штрихкод  ,   кол проданного товара,  количество товара     остаток
12314123213               9                           20                        11

что то вроде того
Название: Re: Разность между двумя полями в разных таблицах
Отправлено: millik от 26 февраля 2018, 03:35:11
Цитата: SEGA от 26 февраля  2018, 12:35:20  
Например

штрихкод  ,   кол проданного товара,  количество товара
12314123213               10                           20
12312412341                2                             12

и я хотел бы получить разность в поле остаток
штрихкод  ,   кол проданного товара,  количество товара     остаток
12314123213               9                           20                        11

что то вроде того

Все очень просто. В скрипте очень много аналогий с SQL
Чтобы получилось как вы хотите, можно просто написать.

LOAD
[штрихкод],
[кол проданного товара], 
[количество товара],
[количество товара] - [кол проданного товара] as остаток

Если не уверены, что значения числовые, можно их дополнительно "прогнать" через функцию Num().

Хотя я бы в принципе рекомендовал так делать со всеми полями, чтобы явно дать знать движку какого типа значение находится в поле: текст через Text(), числа через Num(), даты через Date() и т.п.. Потому что потом, как показывает практика, бывают недопонимания между разработчиком и Qlik'ом =)
Название: Re: Разность между двумя полями в разных таблицах
Отправлено: SEGA от 27 февраля 2018, 09:00:21
Сам код программа  прокомпелировала, однако результат безуспешен вот код, почему не рассчитывает? помогите
LOAD Товар, Поставщик, UNP, КоличествоТ, Штрихкод, PRICEN, ЦенаР
FROM Продажа.xlsx (ooxml, embedded labels);
Directory;
LOAD  Штрихкод, [КоличествоРТ]
FROM Реализация.xls (biff, embedded labels, table is Лист1$);

Directory;

load * Inline [Остаток, Проценты];

load
[Штрихкод],
[КоличествоТ],
[КоличествоРТ],
num(КоличествоТ)-num(КоличествоРТ) as Остаток;
Название: Re: Разность между двумя полями в разных таблицах
Отправлено: admin от 27 февраля 2018, 09:16:02
А если примерно так:

t1:
LOAD Товар, Поставщик, UNP, КоличествоТ, Штрихкод, PRICEN, ЦенаР
FROM Продажа.xlsx (ooxml, embedded labels);
Directory;
left join (t1)
LOAD  Штрихкод, [КоличествоРТ]
FROM Реализация.xls (biff, embedded labels, table is Лист1$);

left join (t1)
Штрихкод,
КоличествоТ-КоличествоРТ as Остаток
resident t1;
Название: Re: Разность между двумя полями в разных таблицах
Отправлено: SEGA от 27 февраля 2018, 09:28:57
УРА получилось ОГРОМНОЕ СПАСИБО
Название: Re: Разность между двумя полями в разных таблицах
Отправлено: admin от 27 февраля 2018, 09:41:52
Суть уловили?
Скрипт считает поля только в одной таблице.
Название: Re: Разность между двумя полями в разных таблицах
Отправлено: millik от 27 февраля 2018, 10:10:39
Пока писал ответ, уже всё объяснили)

ПС
Не очень понял зачем вы используете оператор Directory без ничего. И зачем вы загрузили пустую таблицу load * Inline [Остаток, Проценты];