Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: 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;

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

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