Неофициальный форум разработчиков QlikView и Qlik Sense

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

Вы не вошли.

Готовые решения на платйорме QlikView

#1 2019-04-04 18:35:11

Валерий
Участник
Зарегистрирован: 2017-12-05
Сообщений: 5
Windows 7Chrome 73.0.3683.86

Выборочная загрузка данных

Добрый день!

Есть примерно такая таблица:

Период     Страна      Объёмы экспорта пшеницы, тонны
2018/01    США               5 000
2018/01    Россия           20 000
2018/01    Австралия       3 000
2018/01    Германия        10 000
2018/01    Аргентина      2 000
......................
2018/12    Россия             15 000
2018/12    Австралия       3 000 


Задача:
В загрузочном скрипте оставить ТОП-3 страны-экспортёра (по суммарному итогу), остальные данные убрать.
К-во стран неизвестно, сортировка таблицы не по периодам, а произвольная.

Заранее спасибо за помощь.

Неактивен

#2 2019-04-05 18:49:20

Bao
Участник
Зарегистрирован: 2018-11-22
Сообщений: 16
Windows 7Chrome 73.0.3683.86

Re: Выборочная загрузка данных

//Решение неизящное, но рабочее  smile

Table: //Пример
LOAD * INLINE [
    Country, Num
    США, 1000
    Россия, 4000
    Корея, 200
    Китай, 100
    США, 1000
    Россия, 5000
];

Table2:
load
sum(Num) as Sum,
Country
resident Table group by Country
;
Table3:
First 3 // тут числом задаете топ стран
load Country as TOP
resident Table2 order by Sum desc;
drop table Table;
drop table Table2;

//Топ стран получили, а  дальше джойните Вашу табличку с периодами к этой

Неактивен

#3 2019-04-08 11:00:58

Валерий
Участник
Зарегистрирован: 2017-12-05
Сообщений: 5
Windows 7Chrome 73.0.3683.86

Re: Выборочная загрузка данных

Спасибо!
Решение отличное.

Сначала тоже думал в этом направлении, но "залип" на "order by", т.к. изначально пытался сделать через "group by".

Добавлено спустя 08 мин 10 с:
Единственное, заметил, что таблицу удаётся приджойнить, только предварительно сохранив её в qvd, удалив через Drop Table и загрузив обратно из qvd...

Мож кто-то сталкивался и подскажет почему не получается джойнить "на лету"?

Неактивен

#4 2019-04-08 11:32:05

Bao
Участник
Зарегистрирован: 2018-11-22
Сообщений: 16
Windows 7Chrome 73.0.3683.86

Re: Выборочная загрузка данных

Валерий пишет:

Спасибо!
Решение отличное.

Сначала тоже думал в этом направлении, но "залип" на "order by", т.к. изначально пытался сделать через "group by".

Добавлено спустя 08 мин 10 с:
Единственное, заметил, что таблицу удаётся приджойнить, только предварительно сохранив её в qvd, удалив через Drop Table и загрузив обратно из qvd...

Мож кто-то сталкивался и подскажет почему не получается джойнить "на лету"?

Что значит не получается? в чем выражается ошибка? Подозреваю что у Вас конструкция типа такой, без использования оператора join?


load *
resident (Table)?

Редактировался Bao (2019-04-08 13:16:05)

Неактивен

#5 2019-04-08 18:21:28

Валерий
Участник
Зарегистрирован: 2017-12-05
Сообщений: 5
Windows 7Chrome 73.0.3683.86

Re: Выборочная загрузка данных

Вао,
спасибо за отклик!
Высылаю скрипт (джойн не срабатывает!!!) и уточняю задачу: есть определённый массив данных, необходимо оставить ТОП-3 страны экспортёра за периоды 2018.01 - 2018.06. Буду признателен за помощь!

[RAW]:
Load *
Inline [
Период,Страна,Экспорт
2018/01,США,351
2018/01,Россия,706
2018/01,Австралия,661
2018/01,Германия,382
2018/01,Аргентина,612
2018/12,Россия,719
2018/12,Австралия,689
2018/02,США,462
2018/02,Россия,809
2018/02,Австралия,573
2018/03,Германия,662
2018/02,Аргентина,713
2018/04,Россия,493
2018/02,Австралия, 
2018/02,Россия,793
2018/03,Россия,441
2018/03,Австралия,466
2018/03,США,883
2018/03,Россия,841
2018/03,Австралия,683
2018/03,Германия,805
2018/05,США,677
2018/05,Россия,521
2018/05,Австралия,877
2018/05,Германия,410
2018/05,Аргентина,250
2018/05,Россия,901
2018/05,Австралия,825
2018/04,США,965
2018/04,Россия,339
2018/04,Россия,906
2018/04,Австралия,225
2018/04,США,367
2018/04,Россия,934
2018/06,США,524
2018/06,Россия,759
2018/06,Австралия,456
2018/06,Германия,311
2018/06,Аргентина,436
2018/06,Россия,999
2018/06,Австралия,236
2018/06,США,513
2018/06,Россия,775
2018/06,Россия,430
2018/06,Австралия,662
2018/06,США,594
2018/06,Россия,233
2018/07,Россия,974
2018/07,Австралия,873
2018/09,США,753
2018/10,Россия,303
2018/12,США,398
2018/02,Россия,296
2018/09,Австралия,963
2018/11,Германия,264
2018/11,Аргентина,998
];

[Table]:
NoConcatenate
Load
*
Resident [RAW] where num(Right((Период),2))<7; // Откинул периоды с 2018/07 по 2018/12
Drop Table [RAW];

[Sum]:
Load
[Страна] as Country,// переименовываю, чтобы не было связанных таблиц по полю Страна
sum([Экспорт]) as Exp
Resident [Table] group by [Страна];

[tmp]:
First 3
load
Country,
'TOP' as TOP // создаю признак для выборки в будущем через where
resident [Sum] order by Exp desc;
Drop Table [Sum];


Left Join [Table]:
Load
Country as [Страна],
TOP
Resident [tmp];

drop Table [tmp];

Неактивен

#6 2019-04-09 11:26:55

Bao
Участник
Зарегистрирован: 2018-11-22
Сообщений: 16
Windows 7Chrome 73.0.3683.86

Re: Выборочная загрузка данных

Валерий пишет:

Left Join [Table]:
Load
Country as [Страна],
TOP
Resident [tmp];
drop Table [tmp];

Синтаксис неверный:

Right Join (Table) // - скобки круглые и не надо ":" и не Left, а Right или Inner Join, т.к. надо обрезать по значениям TOP таблицы, да и вообще лучше не использовать квадратные скобки в наименовании таблиц

Load
Country as [Страна],
TOP
Resident tmp;
drop table tmp;

Редактировался Bao (2019-04-09 11:39:23)

Неактивен

#7 2019-04-09 12:05:42

Валерий
Участник
Зарегистрирован: 2017-12-05
Сообщений: 5
Windows 7Chrome 73.0.3683.86

Re: Выборочная загрузка данных

Спасибо, вышло!  smile smile   smile

Неактивен

Сейчас в этой теме форумчан: 0, гостей: 1
[Bot] CCBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.020 сек, 10 запросов выполнено - Использовано памяти: 1.63 Мбайт (Пик: 1.72 Мбайт) ]