подсчет, группировка по категориям и суммирование в Qlik Sense (Qlikview)

Автор NG, 01 апреля 2016, 12:28:25

« назад - далее »

NG

Добрый день!
Я новичек. Изучаю Qlik Sense.
Искала ответ на свой вопрос в руководствах по Qlik, но либо не все понимаю, либо это невозможно сделать.
Прошу помочь, кто знает.
Задача такая:
Есть загруженные базы
Продаж
Orders:
LOAD
    ID_Order,
    ID_Sellers,
    [Date],
    ID_Product,
    Product_count,
    Product_sum
FROM ..........( table is Orders);
ID_Order    ID_Sellers    Date    ID_Product    Product_count    Product_sum
1884    CB0000006    13.02.16    CB000000131    1.00     140 000,00     
1884    CB0000006    13.02.16    CB000000332    1.00     220 000,00     
1876    CB0000006    13.02.16    CB000000639    1.00     110 000,00     
1876    CB0000006    13.02.16    CB000000640    1.00     110 000,00     
1876    CB0000006    13.02.16    CB000002362    1.00     110 000,00     
1876    CB0000006    13.02.16    CB000002365    1.00     110 000,00     
1876    CB0000006    13.02.16    CB000002366    1.00     110 000,00     
1876    CB0000006    13.02.16    CB000002368    1.00     110 000,00     
1876    CB0000006    13.02.16    CB000002369    1.00     110 000,00     
1876    CB0000006    13.02.16    CB000002529    1.00     110 000,00     
1876    CB0000006    13.02.16    CB000002531    1.00     110 000,00     
1882    CB0000007    13.02.16    CB000000754    1.00     110 000,00     
1878    CB0000007    13.02.16    CB000002455    1.00     140 000,00     
1877    CB0000007    13.02.16    CB000002589    1.00     20 000,00     
1882    CB0000007    13.02.16    CB000002842    1.00     120 000,00     
1911    CB0000006    15.02.16    CB000001661    2.00     270 000,00     
1910    CB0000006    15.02.16    CB000002387    1.00     140 000,00     
1910    CB0000006    15.02.16    CB000002768    1.00     120 000,00     
1919    CB0000007    16.02.16    CB000000646    1.00     110 000,00     
1916    CB0000007    16.02.16    CB000002089    1.00     110 000,00     
1916    CB0000007    16.02.16    CB000002104    1.00     110 000,00     
1916    CB0000007    16.02.16    CB000002644    2.00     180 000,00     
1922    CB0000006    17.02.16    CB000000374    1.00     220 000,00     
1926    CB0000006    17.02.16    CB000000586    1.00     220 000,00     
1925    CB0000006    17.02.16    CB000002678    1.00     270 000,00     
1925    CB0000006    17.02.16    CB000002836    1.00     120 000,00     
1930    CB0000007    17.02.16    CB000000595    1.00     220 000,00     
1928    CB0000007    17.02.16    CB000002166    1.00     140 000,00     
1930    CB0000007    17.02.16    CB000002336    1.00     140 000,00     
1930    CB0000007    17.02.16    CB000002838    1.00     120 000,00     
и не связная база
Бонусов(справочник)
ProductSet:
LOAD ID_ProductSet,
    ProductSet_Count,
    Pr_SetBonus
FROM............ (table is ProductSet);
ID_ProductSet        ProductSet_Count    Pr_SetBonus
1    1     500     
2    2     1 500     
3    3     2 500     
4    4     3 500     
5    5     5 000     
6    6     5 000     
7    7     5 000   
Каждому ID_Order    по соответствующему  ID_Sellers и Date может     соответствовать от 1 и более  ID_Product   
нужно создать отдельную не связную новую таблицу ХХХ:, которую потом связать с ProductSet:
В таблице ХХХ: должны остаться те же поля из Orders: ID_Order, ID_Sellers,    Date, (схлопнутые Discinct).   
Поля: Product_sum  меняется на Or_sum и суммирует  Product_sum ,
Product_ count  меняется на Or_count и суммирует  Product_ count  ,
Вместо ID_Product  появится новое поле ID_ProductSet (через которое потом связываться) подсчитывает  ID_Product  строки
В итоге должна получится такая табл.
ID_Order    ID_Sellers    Date    ID_ProductSet    Or_count    Or_sum
1884    CB0000006    13.02.16    2    2    360 000,00
1876    CB0000006    13.02.16    9    9    990 000,00
1882    CB0000007    13.02.16    2    2    330 000,00
1878    CB0000007    13.02.16    1    1    140 000,00
1877    CB0000007    13.02.16    1    1    20 000,00
1911    CB0000006    15.02.16    1    2    270 000,00
1910    CB0000006    15.02.16    2    2    260 000,00
1919    CB0000007    16.02.16    1    1    110 000,00
1916    CB0000007    16.02.16    3    4    400 000,00
1922    CB0000006    17.02.16    1    1    220 000,00
1926    CB0000006    17.02.16    1    1    220 000,00
1925    CB0000006    17.02.16    2    2    390 000,00
1930    CB0000007    17.02.16    3    3    480 000,00
1928    CB0000007    17.02.16    1    1    140 000,00
Почему именно нужна такая таблица. По полю ID_ProductSet потом нужно соединить  (Concatenate) таблицу ProductSet: и получить
ID_Order    ID_Sellers    Date    ID_ProductSet    Or_count    Or_sum    Pr_SetBonus
1884    CB0000006    13.02.16    2    2    360 000,00    1000
1876    CB0000006    13.02.16    9    9    990 000,00    2500
1882    CB0000007    13.02.16    2    2    330 000,00    1000
1878    CB0000007    13.02.16    1    1    140 000,00    500
1877    CB0000007    13.02.16    1    1    20 000,00            500
1911    CB0000006    15.02.16    1    2    270 000,00    500
1910    CB0000006    15.02.16    2    2    260 000,00    1000
1919    CB0000007    16.02.16    1    1    110 000,00    500
1916    CB0000007    16.02.16    3    4    400 000,00    1500
1922    CB0000006    17.02.16    1    1    220 000,00    500
1926    CB0000006    17.02.16    1    1    220 000,00    500
1925    CB0000006    17.02.16    2    2    390 000,00    1000
1930    CB0000007    17.02.16    3    3    480 000,00    1500
1928    CB0000007    17.02.16    1    1    140 000,00    500
После, по полученной таблице уже строить аналитический график.
Если кто-то что-нибудь посоветует, буду очень признательна.

admin

#1
Привет !
Какое хорошее ТЗ  :)
Цитировать
нужно создать отдельную не связную новую таблицу ХХХ:, которую потом связать с ProductSet:
В таблице ХХХ: должны остаться те же поля из Orders: ID_Order, ID_Sellers,    Date, (схлопнутые Discinct).   
Поля: Product_sum  меняется на Or_sum и суммирует  Product_sum ,
Product_ count  меняется на Or_count и суммирует  Product_ count  ,
Вместо ID_Product  появится новое поле ID_ProductSet (через которое потом связываться) подсчитывает  ID_Product  строки
Для получения новой таблицы с агрегированными сведениями нам необходимо загрузить эту таблицу с группировкой по полям определяющим уникальность записи (ID_Order, ID_Sellers,    Date, (схлопнутые Discinct)), для суммирования используем SUM(), для переименования используем AS, в итоге получим:

XXX:
load ID_Order, ID_Sellers, Date,
sum(Product_sum) as Or_count,
sum(Product_ count) as Or_count,
count(ID_Product) as ID_ProductSet
from orders.qvd(qvd)
group by load ID_Order, ID_Sellers, Date;


Проверьте .

NG

Да , простых задач нам не ставят))))

Я примерно так и делала, но группировку не по трем полям поставила.
Скрипт попробовала. Дал одинаковую ошибку и в qlikview и qliksense

Имена полей должны быть уникальными в одной таблице
Orders_XXX:
LOAD
  ID_Order,
  ID_Sellers,
  [Date],
sum(Product_sum) as Or_count,
sum(Product_count) as Or_count,
count (ID_Product) as ID_ProductSet
Resident [Orders]
Group by ID_Order, ID_Sellers, [Date];

Проверила, вроде уникальные наименования, что не нравится , не могу понять???

admin

Извиняюсь, не
sum(Product_sum) as Or_count,
sum(Product_count) as Or_count,

а
sum(Product_sum) as Or_Sum,
sum(Product_count) as Or_count,



NG

Сработало!
Спасибо.
Теперь буду дальше выкручивать эту таблицу, там еще несколько заданий по ней.

Есть еще небольшой вопрос.
В Qlikview он нормально срабатывает, а  QlikSense не срабатывает.
При загрузке файла

Orders:
LOAD
    ID_Order,
    ID_Chek,
    ID_Sellers,
    [Date],

    ID_Product,
    Product_count,
    Product_sum,
    Order_sum
FROM
[\\psf\Home\Desktop\1 Orders Продажи с Kod.xlsx]
(ooxml, embedded labels, table is Orders);

Если я вставляю поле (где пробел сделан)
'Orders' as Type,

В Qlikview  у меня появляется поле Type заполненное словом Orders,
а в QlikSense не срабатывает, ругается при загрузке.
Это особенность QlikSense?

Это поле я хотела ввести, чтобы потом при слиянии таблиц можно было идентифицировать даты.

LoryMax

Не буду создавать новой темы. Также про суммирование.
Почему при суммировании с условием (будь то 100 или 1М записей) всегда используется памяти почти одно и то же количество?

    LOAD OBJECT
        ,DATE
        ,ARTICLE
        ,sum([QSale]) as sumQSale
        ,sum([QBuy]) as sumBuy
        ,sum([QSale]) - sum([QBuy]) as TotalD
from lib://qlikfolder/T33.qvd(qvd)
where NumberN<100
group by DATE, ARTICLE, OBJECT;

Хотел разбивать таблицу на части, чтобы получить суммирование. Если не ограничиваю, то у меня кончается память.

Яндекс.Метрика