Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Добрый день. Собственно только начинаю осваивать продукт, вот такие вот появились вопросы:
1.
Загружается пачка екселевских файлов, с названиями: Город.xlsx и столбцами (например)
"покупки", "продажи", "дата".
Можно ли как-то собрать их в одну табличку со столбцами
"Город", "покупки", "продажи", "дата" ?
Т.е. как-то вытащить имя файла и загрузить его, как значение столбца.
2. (к первому никак не относится). Можно ли как-то сгруппировать таблицу, по 2м столбцам, из получившейся выкинуть строки по какому-либо условию и снова её разгруппировать, пользуясь тем,что осталось?
Заранее благодарю, за любую помощь.
1. Тогда в скрипте нужно будет делать циклическую загрузку.
Пример можно посмотреть тут
Re: Loading Multiple Excel Files In qlikview through Loop
Там более менее понятно должно быть.
2. Есть ли какой-то уникальный ключ в таблице по которому можно присоединяться?
Если нет, то можно создать
LOAD *,
AutoNumberHash128(ФИО&[тип операции]&[код операции]) as KEY
from ...;
Результирующая таблица с агрегатами получается через Resident LOAD.
Потом к ней можно присоединить исходную таблицу на left join. Это первое что пришло в голову.
Возможно, если посидеть подумать, можно придумать и более изящное решение.
Всего доброго.
Андрей Калягин
Добрый день,
1. В загрузочном скрипте необходимо дописать:
Таблица1:
LOAD
Покупки,
Продажи,
Дата,
left(filename(),index(filename(),'.xls')-1) as Город // не важно будет ли это файл xls или xlsx
FROM .... xlsx;
concatenate //аналог операции UNION из SQL
LOAD
Покупки,
Продажи,
Дата,
left(filename(),index(filename(),'.xls')-1) as Город
FROM .... xlsx;
и т.д при загрузке файлов. Если имена столбцов будут идентичны и не используется инструкция QUALIFY, то Qlikview выполнит Concatenate автоматически.
В итоге получится одна таблица с 4 столбцами.
2. Не совсем понял, что Вы имеете ввиду. Группировка полей подразумевает выполнение агрегации или нет?
Опишите более конкретный пример что Вы хотите получить, на таких-то исходных данных.
Всего доброго,
Андрей Калягин
1.Спасибо!
Проблема в том, что список городов будет меняться, т.е. скрипт придется дописывать каждый раз?
2. Да агрегация предполагается.
Есть поля : ФИО, Время начала, Время окончания, чистое время, тип операции... и куча других столбцов.
Т.е. человек фиксирует время, когда начал работу, выполняет разные операции различных типов(фиксируя время их выполнения) затем фиксирует конец работы.
Вот необходимо выкинуть все строки, где разности между длинной сессии ( Время окончания-Время начала)
и Суммой 'чистое время' будет >10.
Т.е. на этом этапе вроде всё получается,
"..where avg(nach_vrem-kon_vrem)-sum(chist_vrem)<10
group by ФИО, Время начала;
Загрузятся вроде только нужные строки, но вот для дальнейших расчетов, мне уже необходимо разделять всё это дело по типам операций, используя при том только загруженные строки.
И вот тут я в тупике.
1. Тогда в скрипте нужно будет делать циклическую загрузку.
Пример можно посмотреть тут
Re: Loading Multiple Excel Files In qlikview through Loop
Там более менее понятно должно быть.
2. Есть ли какой-то уникальный ключ в таблице по которому можно присоединяться?
Если нет, то можно создать
LOAD *,
AutoNumberHash128(ФИО&[тип операции]&[код операции]) as KEY
from ...;
Результирующая таблица с агрегатами получается через Resident LOAD.
Потом к ней можно присоединить исходную таблицу на left join. Это первое что пришло в голову.
Возможно, если посидеть подумать, можно придумать и более изящное решение.
Всего доброго.
Андрей Калягин
Точно, лефт джоином- то что надо. Спасибо.