Форум разработчиков QlikView и Qlik Sense. Получи любые ответы на вопросы по QlikView и Qlik Sense в течении нескольких часов!
Вы не вошли.
Страницы 1
Добрый день!
Есть примерно такая таблица:
Период Страна Объёмы экспорта пшеницы, тонны
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 страны-экспортёра (по суммарному итогу), остальные данные убрать.
К-во стран неизвестно, сортировка таблицы не по периодам, а произвольная.
Заранее спасибо за помощь.
Неактивен
//Решение неизящное, но рабочее
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;
//Топ стран получили, а дальше джойните Вашу табличку с периодами к этой
Неактивен
Спасибо!
Решение отличное.
Сначала тоже думал в этом направлении, но "залип" на "order by", т.к. изначально пытался сделать через "group by".
Добавлено спустя 08 мин 10 с:
Единственное, заметил, что таблицу удаётся приджойнить, только предварительно сохранив её в qvd, удалив через Drop Table и загрузив обратно из qvd...
Мож кто-то сталкивался и подскажет почему не получается джойнить "на лету"?
Неактивен
Спасибо!
Решение отличное.Сначала тоже думал в этом направлении, но "залип" на "order by", т.к. изначально пытался сделать через "group by".
Добавлено спустя 08 мин 10 с:
Единственное, заметил, что таблицу удаётся приджойнить, только предварительно сохранив её в qvd, удалив через Drop Table и загрузив обратно из qvd...Мож кто-то сталкивался и подскажет почему не получается джойнить "на лету"?
Что значит не получается? в чем выражается ошибка? Подозреваю что у Вас конструкция типа такой, без использования оператора join?
load *
resident (Table)?
Редактировался Bao (2019-04-08 13:16:05)
Неактивен
Вао,
спасибо за отклик!
Высылаю скрипт (джойн не срабатывает!!!) и уточняю задачу: есть определённый массив данных, необходимо оставить ТОП-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];
Неактивен
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)
Неактивен
Спасибо, вышло!
Неактивен
Страницы 1
[ Сгенерировано за 0.010 сек, 8 запросов выполнено - Использовано памяти: 1.64 Мбайт (Пик: 1.73 Мбайт) ]