Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
vkozlov
Partner - Creator
Partner - Creator

Схема "Звезда"

Коллеги, привет

Подскажите с очередной задачкой, кто сталкивался:

Пусть имеем простую модель:

Где 1 - Таблица фактов. 2 - справочник

Содержание:

1:

2:

Требуется посчитать табличку, с выражениями

1. сумма продаж

2. количество менеджеров, которые сработали

3. общее количество менеджеров в базе

с 1 и 2 - все понятно

Вопрос по поводу 3. Как запихать сюда общее количество менеджеров в базе (Результат для Москвы = 2, для Омска = 1), которые присутствуют в справочнике, но не связаны с таблицей фактов, т.к. по ним нет документов продаж?

Спасибо

1 Solution

Accepted Solutions
Chernov
Creator
Creator

Объедините всё в одну таблицу, получится то что нужно ?

А еще, на всякий случай, для подсчёта Null  можно использовать функцию: NullCount - chart function ‒ QlikView

Clipboard02.jpg

View solution in original post

9 Replies
Chernov
Creator
Creator

Тут, кажется всё просто:

count (TOTAL Manager)

или через Анализ множеств :

count ( {<Sales= >} Manager) или count ( {<Sales= , Region=>} Manager)

Chernov
Creator
Creator

По вашему п.2 - а почему не написать просто: count (Manager) ? Вместо IF в COUNT'e ?

И вообще структура у вас странная....

Если у вас таблица 1 содержит продажи, а таблица 2 содержит все связи с Менеджеров и Регионов то сделайте синтетический ключ:

1:

Load

     Sales

     , Manager & '-' & ManagerRegion as %Key1

From ....;

2:

Load

     Manager

     , Region

     , Manager & '-' & Region as %Key1

from .... ;

таким образом у вас менеджеры и регионы - будут в одной таблице, а в другой у вас будут только продажи и связаны они будут по ключу : %Key1

И ваши формулы будут такие:

1. sum(Sales)

2. count (Manager) ... если нужно различные то  count (distinct Manager)

3. count (TOTAL Manager) или count (TOTAL {<%Key1 = >} Manager )

Вроде всё..

vkozlov
Partner - Creator
Partner - Creator
Author

Станислав, спасибо за фидбэк

В этом случае получаем:

Что не есть то что нам нужно

vkozlov
Partner - Creator
Partner - Creator
Author

Спасибо, хорошая идея с синтетическим ключом и расположением региона в таблице менеджера. Да, будет работать. Но на своей "звезде" такую методику я не могу применить, поскольку в модели, помимо менеджера фигурируют еще контрагенты и другие справочники, которые имеют привязку к региону. Поэтому регион должен оставаться в фактах и быть в "центре" звезды

vkozlov
Partner - Creator
Partner - Creator
Author

Через IF пошел, для того, чтобы связать справочник с фактами по региону, чтобы не было такого

Chernov
Creator
Creator

Можно ведь скрыть Null() записи : img-2017-08-18-23-31-57.png / Облако Mail.Ru

А покажите всю структуру ?

vkozlov
Partner - Creator
Partner - Creator
Author

Боевую выкладывать не буду. Она очень емкая. Усложню текущую схему, добавив дополнительный справочник

Во вложении qvw

Схема:

В центре таблица с транзакциями и ссылками на справочники

Хотелось бы в этой модели одним отчетом посчитать продажи и отобразить общее количество менеджеров и клиентов базы (к примеру, чтобы посчитать среднюю выручку на клиента/менеджера в регионе = Общая выручка/Количество клиентов/менеджеров в базе; при этом некоторые клиенты могут не отработать за указанный период, однако должны быть учтены)

Chernov
Creator
Creator

Объедините всё в одну таблицу, получится то что нужно ?

А еще, на всякий случай, для подсчёта Null  можно использовать функцию: NullCount - chart function ‒ QlikView

Clipboard02.jpg

vkozlov
Partner - Creator
Partner - Creator
Author

Станислав, спасибо!

Натолкнул на отличную идею с каунтом:

Посчитать на уровне скрипта константу для каждого справочника

Например для клиентов добавляем в скрипт:

C:

LOAD Count(Client) as TotalRegionClient,

     ClientRegion

Resident Clients Group by ClientRegion;

На выходе получаем таблицу с константой

Вариант с объединением тоже хорош и будет работать