FAQ по моделям в Qlik Sense/Qlik View часть 2

Q: Имеются данные по вызовам. Необходимо построить диаграмму, которая показывает число вызовов в секунду. Как это сделать?

Контекст Дата и время создания Дата и время завершения
2162491505 21.06.2016 12:23:48 21.06.2016 12:23:50
2162480790 21.06.2016 12:21:07 21.06.2016 12:30:00
2162503334 21.06.2016 12:26:45 21.06.2016 12:31:38
2162506653 21.06.2016 12:27:33 21.06.2016 12:28:16
2162509859 21.06.2016 12:28:19 21.06.2016 12:33:08

A: Итак, отталкиваемся от результирующей таблицы.
Нам потребуется измерение — единица времени до секунды.
Следовательно потребуется создать календарь с записью на каждую секунду.
Затем, исходные данные надо представить в виде:

Контекст, Дата
2162480790, 21.06.2016 12:21:07
2162480790, 21.06.2016 12:21:08
2162480790, 21.06.2016 12:21:09
2162480790, 21.06.2016 12:21:10
……….
Как это сделать, на форуме обсуждалось
Обратите внимание на использование функции iterno()

Q: я просмотрела очень много материала, но не смогла решить такую задачу. Хотя есть что-то подобное на этом сайте в темах «Как создать таблицу перекрестных продаж в Qlikview?» от 08.01.2015 и «Выборка по принципу «И», Qlikview» от 22.03.2016 , но у меня более глобальное.
и возможно ли это будет реализовать в QlikSense?
есть такая таблица данных (это пример)
У задачи есть подводный камень ( ID_Chek не уникальный, но может повторятся у разных Sellers)
Необходимо найти все кросс-продажи в разрезе Продукта. (внизу таблица результата)

DateKKM ID_Chek ID_Product Name_Product ID_Sellers ID_Market Qty
01.02.2016 1 804 CB000001174 Брюки Seller1 market4 1
01.02.2016 1 804 CB000001186 Рубашка белая Seller1 market4 1
02.02.2016 1 808 CB000001174 Брюки Seller1 market4 1
02.02.2016 1 811 CB000001186 Рубашка белая Seller1 market4 1
02.02.2016 1 812 CB000001186 Рубашка белая Seller1 market4 1
02.02.2016 1 812 CB000001226 Бабочка Seller1 market4 1
03.02.2016 1 815 CB000001226 Бабочка Seller1 market4 1
03.02.2016 1 819 CB000001247 ремень Seller1 market4 1
03.02.2016 1 820 CB000001174 Брюки Seller1 market4 1
03.02.2016 1 824 CB000001247 ремень Seller1 market4 1
03.02.2016 1 824 CB000001174 Брюки Seller1 market4 1
03.02.2016 1 824 CB000001186 Рубашка белая Seller1 market4 1
03.02.2016 1 827 CB000001226 Бабочка Seller1 market4 1
03.02.2016 1 829 CB000001310 Рубашка синяя Seller1 market4 1
04.02.2016 1 814 CB000001174 Брюки Seller2 market2 1
04.02.2016 1 816 CB000001174 Брюки Seller2 market2 1
04.02.2016 1 821 CB000001174 Брюки Seller2 market2 1
04.02.2016 1 821 CB000001310 Рубашка синяя Seller2 market2 1
04.02.2016 1 821 CB000001247 ремень Seller2 market2 1
05.02.2016 1 830 CB000001310 Рубашка синяя Seller1 market4 1
05.02.2016 1 830 CB000001226 Бабочка Seller1 market4 1
05.02.2016 1 832 CB000001226 Бабочка Seller1 market4 1
05.02.2016 1 836 CB000001186 Рубашка белая Seller1 market4 1
05.02.2016 1 837 CB000001174 Брюки Seller1 market4 1
05.02.2016 1 837 CB000001310 Рубашка синяя Seller1 market4 1
05.02.2016 1 837 CB000001247 ремень Seller1 market4 1
05.02.2016 1 843 CB000001174 Брюки Seller1 market4 1
05.02.2016 1 824 CB000001174 Брюки Seller2 market2 1
05.02.2016 1 826 CB000001226 Бабочка Seller2 market2 1
05.02.2016 1 827 CB000001247 ремень Seller2 market2 1
06.02.2016 1 849 CB000001310 Рубашка синяя Seller1 market4 1
06.02.2016 1 849 CB000001226 Бабочка Seller1 market4 1
06.02.2016 1 849 CB000001174 Брюки Seller1 market4 1
06.02.2016 1 849 CB000001186 Рубашка белая Seller1 market4 1
06.02.2016 1 815 CB000001174 Брюки Seller7 market3 1
06.02.2016 1 815 CB000001186 Рубашка белая Seller7 market3 1
07.02.2016 1 855 CB000001226 Бабочка Seller1 market4 1
07.02.2016 1 855 CB000001310 Рубашка синяя Seller1 market4 1
07.02.2016 1 843 CB000001310 Рубашка синяя Seller2 market2 1
07.02.2016 1 855 CB000001226 Бабочка Seller2 market2 1
07.02.2016 1 857 CB000001310 Рубашка синяя Seller2 market2 1
07.02.2016 1 857 CB000001226 Бабочка Seller2 market2 1
07.02.2016 1 857 CB000001174 Брюки Seller2 market2 1
07.02.2016 1 818 CB000001247 ремень Seller7 market3 1
07.02.2016 1 820 CB000001226 Бабочка Seller7 market3 1
08.02.2016 1 869 CB000001247 ремень Seller2 market2 1
08.02.2016 1 829 CB000001174 Брюки Seller7 market3 1
08.02.2016 1 830 CB000001174 Брюки Seller7 market3 1
08.02.2016 1 831 CB000001247 ремень Seller7 market3 1
08.02.2016 1 832 CB000001186 Рубашка белая Seller7 market3 1
09.02.2016 1 833 CB000001186 Рубашка белая Seller7 market3 1
09.02.2016 1 835 CB000001226 Бабочка Seller7 market3 1
09.02.2016 1 835 CB000001310 Рубашка синяя Seller7 market3 1
09.02.2016 1 837 CB000001226 Бабочка Seller7 market3 1
10.02.2016 1 845 CB000001226 Бабочка Seller7 market3 1
10.02.2016 1 847 CB000001174 Брюки Seller7 market3 1
10.02.2016 1 847 CB000001247 ремень Seller7 market3 1
10.02.2016 1 847 CB000001186 Рубашка белая Seller7 market3 1
10.02.2016 1 864 CB000001186 Рубашка белая Seller7 market3 1

Общее количество -это сколько раз вообще встречается ПродуктN любом чеке(это не сложно).
Затем столбцы пересечений:
Когда пересечение ПродуктN=ПродуктN, значит Продукт продался один в чеке, посчитать кол-во.
Там где ПродуктN продавался с ПродуктZ посчитать кол-во разов совместной продажи (попадания обоих в один чек).
процент — это отношение текущего значения к общ. кол-ву

общ. кол-во Брюки Рубашка белая Бабочка ремень Рубашка синяя
Брюки 16 8 50% 5 31% 2 13% 4 25% 4 25%
Рубашка белая 11 5 31% 5 31% 2 13% 2 13% 1 6%
Бабочка 14 2 13% 2 13% 8 50% 0 0% 5 31%
ремень 9 4 25% 2 13% 0 0% 5 31% 2 13%
Рубашка синяя 9 4 25% 1 6% 5 31% 2 13% 2 13%

A:Задача на самом деле не такая сложная как может показаться.
Хотелось бы еще услышать какие варианты решений вы рассматривали.

Начнем рассуждения от итоговой таблицы.
Вполне очевидно, что одним измерением мы не обойдемся => нам необходимо изменить модель данных, т.е. добавив второе измерение Продукт2. Но с каким ключом?
В условии говорится, что ключ для продавцов может повторяться, значит вводим новый уникальный ID.
Как это сделать — на ваше усмотрение. Либо просто сцепить значения — ID_Chek&ID_Sellers as ID или же получить уникальную последовательность символов для каждого сочетания функцией hash128().
Теперь нам надо организовать нашу модель так, чтобы для каждого Продукта1 была связь с каждым Продуктом2. Для этого можно использовать объединение типа Outer Join.
Таким образом мы получим модель, с которой можно будет продолжить эксперименты и ответы на ваш вопрос.
Привет, примерно так:
Код:
LOAD DateKKM,
ID_Chek&ID_Sellers as ID ,
ID_Product,
Name_Product,
ID_Sellers,
ID_Market,
Qty
FROM [для инет .xlsx] (ooxml, embedded labels, table is [Сhek KKM]);

Outer Join LOAD ID_Chek&ID_Sellers as ID ,
Name_Product as Name_Product2
FROM [для инет .xlsx] (ooxml, embedded labels, table is [Сhek KKM]);

Q:Столкнулся с задачей, которую никак не могу решить.

Есть таблица с остатками на определенный день:
01.12.2015 — 100р.
02.12.2015 — 200р.
03.12.2015 — 500р.
04.12.2015 — 200р.
07.12.2015 — 300р.
08.12.2015 — 600р.
09.12.2015 — 500р.

В таблице нет 05.12.2015 и 06.12.2015. Я же хочу, что бы если в дате нулевой остаток, то в эту дату проставлялся бы остаток из предыдущей даты. Т.е.:
01.12.2015 — 100р.
02.12.2015 — 200р.
03.12.2015 — 500р.
04.12.2015 — 200р.
05.12.2015 — 200р.
06.12.2015 — 200р.
07.12.2015 — 300р.
08.12.2015 — 600р.
09.12.2015 — 500р.

Подкиньте, пожалуйста, идею, как такое реализовать?

A: Попробуй вот так:
Код: [Выделить]
[quote][quote]Data:
LOAD * Inline [
DATE, QUANTITY
01.12.2015, 100
02.12.2015, 200
03.12.2015, 500
04.12.2015, 200
07.12.2015, 300
08.12.2015, 600
09.12.2015, 500
];

STORE * from Data into Data.qvd (qvd);
DROP Table Data;

Date:
LOAD Min(DATE) as MIN_DATE_N,
Max(DATE) as MAX_DATE_N
FROM Data.qvd (qvd);

LET v_MinDate = FieldValue (‘MIN_DATE_N’, 1);
LET v_MaxDate = FieldValue (‘MAX_DATE_N’, 1);

FOR d = $(v_MinDate) to $(v_MaxDate)
Calendar:
load date($(d), ‘DD.MM.YYYY’) as DATE
AutoGenerate(1);
next d

Left Join (Calendar)
LOAD DATE,
QUANTITY
FROM Data.qvd (qvd);

STORE * from Calendar into Data.qvd (qvd);
DROP Table Calendar;

Data:
LOAD DATE,
If (IsNull(QUANTITY), 0, QUANTITY) as QUANTITY
FROM Data.qvd (qvd);

STORE * from Data into Data.qvd (qvd);
//DROP Table Data;

NoConcatenate
Data_01:
LOAD DATE,
If(QUANTITY = 0, Alt(Peek(‘QUANTITY’), QUANTITY), QUANTITY) as QUANTITY
Resident Data
Order By DATE;

DROP Table Data;[/quote][/quote]

Больше информации по данному вопросу можно посмотреть по ссылке — https://community.qlik.com/message/1025148#1025148

Q: есть две таблицы:
таб. 1 [ФИО сотрудника], [Дата приема]
таб. 2 [ФИО сотрудника], [Дата увольнения]
Данные в обоих таблицах накапливаются.

Необходимо Сотрудникам из табл. 1, но отсутствующим в таб. 2, присваивать статус «работает»,
а сотрудникам из таб. 2 присваивает статус «уволен».

A: можно объединить и проставить статусы по условиям.
Код:
Кадры:
LOAD * INLINE [
ФИО, Принят
Иванов, 01.01.2016
Петров, 01.02.2016
Сидоров, 01.03.2016
];

left join LOAD * INLINE [
ФИО, Уволен
Петров, 10.03.2016
Сидоров, 31.03.2016
];

Q: Возник вопрос следующего характера.
Есть таблица (прикрепленный файл 101.png):
Код:
Data:
LOAD * Inline [
ID, DATE, NAME, QUANT_STOCK
1, 01.01.2016, NAME_01, 2
2, 02.01.2016, NAME_01, 1
3, 03.01.2016, NAME_01, 0
4, 11.01.2016, NAME_01, 5
5, 12.01.2016, NAME_01, 5
6, 13.01.2016, NAME_01, 5
7, 14.01.2016, NAME_01, 0
];

Хотелось бы получить следующую таблицу — прикрепленный файл 102.png

Описание:
Если остаток на складе какого-то товара 0 и следующие несколько дней товара не было, то хотелось бы, чтобы данный товар множился в таблице пока он не появится на складе (то есть, пока не будет прихода).
Также, хотелось бы, чтобы был счетчик — товара нет на остатке 1 день, 2 дня, 3 дня и т.д.

A: Это скрипт QliKView в формате QVS. Можно открыть блокнотом (notepad++) или импортировать в приложение QliKView.
Прикрепил целиком приложение.

Q: Подскажите, как реализовать расчет отдельно дебиторской и кредиторской задолженности.

С ДЗ и КЗ на начало проблем нет — Sum({<Остаток={"<0"}>} Остаток).
А вот ДЗ и КЗ на конец периода рассчитывается if (Sum(Остаток)+SUM (Отгрузка)-Sum(Оплата)<0,Sum(Остаток)+SUM (Отгрузка)-Sum(Оплата)) и с ними проблема При использовании измерения Контрагент все получается, но при измерении Филиал, сумма Итог или Подитог - не хочет разделяться. Даже при добавлении вторым измерением контрагента Второй вопрос - как реализовать расчет ДЗ и КЗ за любой период, т.к. сейчас началом период всегда должна быть дата начального остатка (актуально будет и для реализации движений товарных запасов или денежных средств) Третий вопрос, как сделать выражение при измерении Дата Остаток на начало загружается отдельно. Оплаты и отгрузки загружаю документами. LOAD * INLINE [ Филиал, Контрагент, Отгрузка, Оплата, Дата А, 1, 2, 10, 01.01.2015 А, 1, 2, 10, 01.02.2015 А, 2, 5, 1, 01.01.2015 А, 2, 6, 5, 01.02.2015 В, 3, 7, 6, 01.01.2015 В, 3, 3, 15, 01.02.2015 В, 4, 8, 10, 01.01.2015 ]; LOAD * INLINE [ Филиал, Контрагент, Остаток, Дата А, 1, -5, 01.01.2015 А, 2, 3, 01.02.2015 В, 3, 1, 01.01.2015 В, 4, -8, 01.01.2015 ]; http://s48.radikal.ru/i119/1603/fe/045800047cfb.png A:Лучше всего, рассчитывать остатки отдельно в скрипте. Либо загружать их с учетной системы.

Q: Коллеги, не так давно начал осваивать qlik и вот сейчас стоит такая задача.
есть таблица, примерно 30,000 строк.
есть календарь.
их надо объединить следующим образом, что бы на каждую дату из календаря, были все данные из первой таблицы (30,000).
например в календаре 5ть дат, и результирующая таблица должна иметь 150,000 строк.
как это можно провернуть?

A: Так?
Код:
t1:
LOAD * INLINE [
A, B
1, 11
2, 22
3, 33
4, 44
5, 55
];
t2:
join LOAD * INLINE [
Дата, Текст
01.02.2016, Раз
02.02.2016, Два
03.02.2016, Три
04.02.2016, Четыре
];
http://qlikview-forum.ru/qvf/index.php/topic,1018.msg2559.html#msg2559

Q: абсолютный ноль в скрипте. Я загрузила 2 таблицы эксель
LOAD №,
Филиал,
Город,
Управление,
Отдел,
[№ Услуги],
Услуги,
[FTE]
FROM
[C:\Users\Desktop\Распределение выручки_ноябрь 2015_v2_комментарии.xlsx]
(ooxml, embedded labels, table is [FTE ноябрь]);

LOAD СityID,
Город,
Coefficient
FROM
[C:\Users\Desktop\Распределение выручки_ноябрь 2015_v2_комментарии.xlsx]
(ooxml, embedded labels, table is Коэф);

Первая таблица содержит трудозатраты по городам, а вторая коэфициенты для этих городов. Задача такая: столбик [FTE] из первой таблицы умножить на Coefficient из второй в зависимости от города.

A: Поле Город — ключевое.
Следовательно две таблицы будут связаны по этому полю.
Создайте объект диаграмма, с измерением = Город и необходимой формулой.

Q: Подскажите, пожалуйста, по такому вопросу.
Есть готовый рабочий документ QV 11 Desktop, который вытягивает данные из Oracle.

Остался последний штрих: каким образом сделать выбор кратности сумм в документе?

То есть у меня есть список:
руб.
тыс. руб.
млн. руб.
млрд. руб.

[offtop] пусть такой список не смущает, речь идет белорусских рублях ))) [/offtop]

И в идеале при выборе только одного значения из списка суммы в документе пересчитывались.
Я честно говоря даже не представляю как это сделать.
Возможно, кто-то из участников сталкивался с подобными задачами или может быть видел и может скинуть ссылку на учебный пример или документ, где можно посмотреть как это реализовано.

A: извиняюсь что так долго пришлось ждать одобрения созданной темы.
По вопросу.
Можно сделать отдельную, несвязанную ни с чем таблицу с коэффициентами (от рублей и так далее).
В формулах с выражениями подсчета сумм денежных масс добавлять множитель:
Код:
(выражение про деньги)*МножительДеньги
Тогда, в зависимости от выбранной строки в списке будет происходить перерасчет всех выражений с множителем.
Не проверял, но должно сработать. 🙂

Q: У меня такая проблема. Загружаю данные из разных баз данных с 1С через connector. Не получается почему то. Думаю дело в том что имеются одинаковые поля. Но мне казалась, что он их должен просто связать. Подскажите пожалуйста, что делать. Заранее Спасибо.

Это из первой базы данных 1С
Код:
CUSTOM CONNECT TO «Provider=1C_Connector_QV10.exe;XInitString=Presario|Ruza1C_USP|MSSQL|No|Sql2008R2|Ruza1C_USP|8.2|F83EB2B8CFC35936|CB9B6E13FF9F81DF|YEs|No|;XUserId=LYEOCIDSQGNBNeCaYFUbLIDXROADNBGaAEUBbILQQWPDNAKf;XPassword=*******;»;

LOAD Ссылка,
Справочник.Контрагенты:
ВерсияДанных,
ПометкаУдаления,
Предопределенный,
Родитель,
ЭтоГруппа,
Код,
Наименование,
ГоловнойКонтрагент,
ДокументУдостоверяющийЛичность,
ДополнительноеОписание,
ИНН,
ИсточникИнформацииПриОбращении,
КодПоОКПО,
Комментарий,
КПП,
НаименованиеПолное,
ОсновноеКонтактноеЛицо,
ОсновнойБанковскийСчет,
ОсновнойВидДеятельности,
ОсновнойДоговорКонтрагента,
ОсновнойМенеджерПокупателя,
Покупатель,
Поставщик,
РасписаниеРаботыСтрокой,
СрокВыполненияЗаказаПоставщиком,
ЮрФизЛицо,
НеЯвляетсяРезидентом,
ОКОПФ,
Регион,
ГруппаДоступаКонтрагента,
_ВидДоставки,
_КодЧисловой,
_НашМагазин,
НомерРейса,
КатегорияКлиента,
КорпоративныйКод;
SQL SELECT *
FROM Справочники.Контрагенты;
STORE Справочник.Контрагенты into СП.qvd;

Это из второй базы данных 1С
Код:
CUSTOM CONNECT TO «Provider=1C_Connector_QV10.exe;XInitString=Presario|RHlebUSP|MSSQL|No|Sql2008R2|RHlebUSP|8.2|F83EB2B8CFC35936|CB9B6E13FF9F81DF|YEs|No|;XUserId=YIdIUARMNLacGdC;XPassword=********;»;
Справочник.Контрагенты:
LOAD Ссылка,
ВерсияДанных,
ПометкаУдаления,
Предопределенный,
Родитель,
ЭтоГруппа,
Код,
Наименование,
_1абКонтейнерныеАвтомобили,
_ВидДоставки,
_КодЧисловой,
_НашМагазин,
ГоловнойКонтрагент,
ГруппаДоступаКонтрагента,
ДокументУдостоверяющийЛичность,
ДополнительноеОписание,
ИНН,
ИспользоватьЕвролотки,
ИсточникИнформацииПриОбращении,
КлиентЭкспо,
КодПоОКПО,
КодСтаройИБ,
Комментарий,
КонтролироватьНомерЗаказаПокупателя,
КПП,
лРасчетныйСчетДляПечати,
Маршрут,
НаименованиеПолное,
НеЯвляетсяРезидентом,
ОКОПФ,
Округ,
ОсновноеКонтактноеЛицо,
ОсновнойБанковскийСчет,
ОсновнойВидДеятельности,
ОсновнойДоговорКонтрагента,
ОсновнойМенеджерПокупателя,
Покупатель,
Поставщик,
РасписаниеРаботыСтрокой,
Регион,
рздДоверенностьНаДеньги,
рздДоверенностьНаЧерствяк,
рздИспользоватьИндивидуальныйСоставДокументовДляПечати,
рздИспользоватьТипЦенГрузополучателя,
СрокВыполненияЗаказаПоставщиком,
сфтРеальныйКонтрагент,
ФлагОтпускатьВКг,
ЮрФизЛицо,
GLN,
eXiteОбмен,
eXiteОтчетОбОтгрузке,
eXiteСчет,
eXiteПодтверждениеЗаказа,
РучнойЗапретОтгрузки,
НомерРейса,
КатегорияКлиента;
SQL SELECT *
FROM Справочники.Контрагенты;
STORE Справочник.Контрагенты into СП1.qvd

A: Привет, вам необходимо продумать модель данных, затем уже загружать данные.
При этом не стоит грузить все поля. К чему нужна пометка на удаление? Просто поставьте в условии что надо грузить все актуальные записи, а поле закомментируйте в загрузке.
Если вы хотите получить один, общий справочник контрагентов, то по максимум сделайте таблицы одинаковыми по структуре и делайте загрузку с объединением (concatenate load).


Найти решение у бизнес-партнера QlikTech (QlikView) в России.

Форум разработчиков QlikView и Qlik Sense. Получите ответы на все вопросы по QlikView и Qlik Sense!

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

64 queries in 0,191 seconds
Website nonton bokep jepang