Неофициальный форум пользователей Qlik Sense & Qlikview

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: asdlegioner от 19 ноября 2014, 12:05:58

Название: API Goole Analitics
Отправлено: asdlegioner от 19 ноября 2014, 12:05:58
Доброго времени суток.

С помощью компоновщика формирую запрос к определенным данным Goole Analytics, в конце запроса выводиться диапазон даты, выгружать данные с 05-10-2014 по 14-11-2014. Можно ли как то эту строку сделать динамической и привязать выгрузку к той дате которая выбрана в моем приложении?

ЦитироватьFROM
[http://localhost:5555/QVSource/GoogleAnalyticsConnectorV3/?table=DataFromTemplateQuery&appID=&profileId=66010263&prebuiltQuery=dimensions%3dga%253asource%26metrics%3dga%253apageviews%252cga%253atimeOnSite%252cga%253aexits%26filters%3dga%253amedium%253d%253dorganic%26sort%3d-ga%253apageviews&startDate=05-10-2014&endDate=14-11-2014]
Название: Re: API Goole Analitics
Отправлено: admin от 19 ноября 2014, 12:39:42
День добрый.

Что касается переменных в скрипте.
Да, можно. Просто подставив переменную $(vVar) в нужное место.
В этом случае в момент обновления скрипта будут подставляться соответствующие значения переменных.
Но, что касается задачи - лучшим решением будет загрузка всех данных в модель и обычная работа Qlikview or Sense.

Название: Re: API Goole Analitics
Отправлено: asdlegioner от 19 ноября 2014, 12:43:53
Вся загвоздка в ограничение данных, нельзя загружать по API больше 10000 строк за раз в сутки.((

Я забросил Qlik sense, там очень неудобный интерфейс приложения получается.) А в пробной версии qlikviev можно защитить готовое приложение от пользователя?
Название: Re: API Goole Analitics
Отправлено: admin от 19 ноября 2014, 01:07:57
Сделай загрузчик и привяжи его на расписание.
Пусть каждый день формирует файлы qvd с суффиксом даты, а а приложении для пользователя  просто загрузишь по маске filename*.qvd.
Неудобный интерфейс SENSE ? Для разработчика, может быть. Для пользователя - спорный вопрос.
Версия Qlikview не пробная, а с ограничениями. Ограничение доступа присутствует.
Название: Re: API Goole Analitics
Отправлено: asdlegioner от 19 ноября 2014, 01:40:14
А вот с этого момента можно подробней, это получаться я смогу сделать некий файл в который каждый день при запуске программы будут записываться данные по API запросу? А как это технически все реализовать, а то уже хотел заказывать скрипт который будет каждый день вести сбор данный по API запросу в одну базу excel.


Цитата: admin от 19 ноября  2014, 01:07:57  
Сделай загрузчик и привяжи его на расписание.
Пусть каждый день формирует файлы qvd с суффиксом даты, а а приложении для пользователя  просто загрузишь по маске filename*.qvd.


В QlikView компактней все и удобней работать с картинками, а то в сенсе две таблицы занели все рабочее пространство.
ЦитироватьНеудобный интерфейс SENSE ? Для разработчика, может быть. Для пользователя - спорный вопрос.
Версия Qlikview не пробная, а с ограничениями. Ограничение доступа присутствует.
Название: Re: API Goole Analitics
Отправлено: admin от 19 ноября 2014, 02:06:31
Почитай в руководстве про QVD файлы.
Можно сделать двухступенчатую схему.
Первый скрипт без интерфейса грузит данные и складывает их в каталог в формате QVD или CSV
А пользовательское приложение уже работает только  с этой папкой, т.е. грузит только QVD файлики.

Что касается интерфейса SENSE, так это его особенность, основная можно сказать.
можно добавлять несколько объектов они будут автомасштабироваться.
И под разрешение экрана пользователя в том числе.
Название: Re: API Goole Analitics
Отправлено: asdlegioner от 19 ноября 2014, 03:42:24
Получается так:

Есть скрипт загрузка данных по API и я добавляю скрипт который создает QVD файл Store * from mytable into xyz.qvd;


ЦитироватьGoogleAnalyticsConnectorV3_DataFromTemplateQuery:
LOAD
   dim_source as DataFromTemplateQuery_dim_source,
   metric_pageviews as DataFromTemplateQuery_metric_pageviews,
   metric_timeOnSite as DataFromTemplateQuery_metric_timeOnSite,
   metric_exits as DataFromTemplateQuery_metric_exits
FROM
[http://localhost:5555/QVSource/GoogleAnalyticsConnectorV3/?table=DataFromTemplateQuery&appID=&profileId=66010263&prebuiltQuery=dimensions%3dga%253asource%26metrics%3dga%253apageviews%252cga%253atimeOnSite%252cga%253aexits%26filters%3dga%253amedium%253d%253dorganic%26sort%3d-ga%253apageviews&startDate=05-10-2014&endDate=14-11-2014]
(qvx);

Store * from mytable into xyz.qvd;

Название: Re: API Goole Analitics
Отправлено: asdlegioner от 19 ноября 2014, 04:36:46
Не знаю правильный способ или нет, но файл создается и все данные в него загружаются. Остаються вопросы по автоматизации.)

Есть API запрос:

ЦитироватьFROM
[http://localhost:5555/QVSource/GoogleAnalyticsConnectorV3/?table=DataFromTemplateQuery&appID=&profileId=66010263&prebuiltQuery=dimensions%3dga%253asource%26metrics%3dga%253apageviews%252cga%253atimeOnSite%252cga%253aexits%26filters%3dga%253amedium%253d%253dorganic%26sort%3d-ga%253apageviews&startDate=05-10-2014&endDate=14-11-2014]

Как можно сделать чтобы при запуске программы в запросе поле дата "Date=14-11-2014&endDate=14-11-2014" писалась текущая дата, и скрипт загружал каждый день данные в один и тот же файл.
Название: Re: API Goole Analitics
Отправлено: admin от 20 ноября 2014, 08:14:07
Итак, по порядку.
Для подстановки параметра в строку запроса нам его следует предварительно вычислить и преобразовать в соответствующий формат, который отличен от формата по умолчанию.
Это делается очень просто:
let vToDay=date(today(),'DD-MM-YYYY');

Затем, переменную vToDay следует подставить в строку запроса:

...&startDate=$(vToDay)&endDate=$(vToDay)


Теперь, что касается сохранения в один файл.
Как можно понять из документации, QVD-формат является нередактируемым. То есть, нельзя открыть файл, удалить часть записей, изменить или добавить. Но можно открыть файл, сформировать новый и переписать поверх старого. Но это операция одноразовая, старый файл уже не восстановишь.
В каких-то ситуациях этот способ устраивает, в каких-то нет.
Qlikview прекрасно открывает файлы по маске, и этим можно воспользоваться, упростив себе решение задачи.
То есть, выполняя сохранение данных в файл XYZ_$(vToDay).qvd мы получим массив файлов,кстати,  их можно выделить в отдельный каталог.
XYZ_14-11-2014.qvd
....
XYZ_30-11-2014.qvd

В пользовательском приложении мы можем указать одну строку загрузки для всего набора файлов, соответствующих маске:
..from XYZ_*.qvd
В результате, Qlikview загрузит все файлы в одну таблицу.
Далее, уже по ситуации, либо оставить как есть. либо сделать обработчик, формирующий по одному файлу на каждый месяц и при наличии месячного файла грузить данные из него, а текущий месяц грузить из ежедневных. Ну и так далее, это уже алгоритмика.
Название: Re: API Goole Analitics
Отправлено: asdlegioner от 20 ноября 2014, 10:09:05
Спасибо большое за помощь.

По месяцу выгружать к слежению не получиться одним файлом ограничения API, все не влезет, придется каждый день формировать. Почитал справочник, про макросы очень мало описано, не смог понять как сделать чтобы при запуске происходила загрузка из скриптов. И что делать в том случае если пропущен какой либо день и его необходимо загрузить в файла .qvd, это можно реализовать как то через поле с кнопкой где можно указать дату и до загрузить данные или есть еще какие нибудь решения?



ЦитироватьДалее, уже по ситуации, либо оставить как есть. либо сделать обработчик, формирующий по одному файлу на каждый месяц и при наличии месячного файла грузить данные из него, а текущий месяц грузить из ежедневных. Ну и так далее, это уже алгоритмика.

А как тогда делать отбор данных по дате если она не фигурирует в таблице а указана только в имени файла XYZ_14-11-2014.qvd?
Название: Re: API Goole Analitics
Отправлено: admin от 20 ноября 2014, 10:27:23
Ну, все намного проще ))
Итак, что нам надо.
Сервер, или станцию которая работает каждый день.
На этой станции ставим и создаем приложение без интерфейса, только скрипт, скажем load.qvw
Настраиваем задание на запуск по времени бат файла с одной строкой
"C:\Program Files\QlikView\qv.exe" /r load.qvw
В скрипте прописываем описанный выше алгоритм, который будет формировать файлы QVD и сохранять их в папку. Таким образом мы создаем хранилище даных.
Все, на этом контакт с гуглем завершен. Никаких дополнительных запросов за месяц не надо будет делать. Мы сформируем эти сведения из тех данных что у нас накопились в нашем хранилище.

Что касается даты. Мне неизвестна структура сохраняемых сведений, но если там нет даты, в чем я сомневаюсь, мы всегда можем вставить новое поле к уже имеющимся.
Возможно для этого придется создать новую переменную, в формате по умолчанию.

Макросы здесь ни к чему. Но если потребуется дополнительная обработка данных, выходящая за рамки стандартного набора функций, то и это не проблема.
В теме про генератор простых чисел я уже приводил пример (http://qlikview-forum.ru/qvf/index.php/topic,417.0.html)

Да, Qlikview должен устанавливаться под тем пользователем, от имени которого будет запускаться задание. Если это сервер, то потребуется назначить права на запуск задания. Это уже вопрос к системному администратору.
Название: Re: API Goole Analitics
Отправлено: asdlegioner от 20 ноября 2014, 10:46:01
А классная идея собирать все данные на отдельном серваке, а пользователь будет загружать данные удаленно с ftp если так возможно и ему не надо париться со сбором данных.) Только один минус, траф будет гоняться большой когда все разрастется, и скорость загрузки данных будет низкая.((
Название: Re: API Goole Analitics
Отправлено: admin от 20 ноября 2014, 10:56:35
Зачем FTP, если в одной сети то достаточно папки с настроенным доступом.
А вообще для этих целей служит Qlikview Server либо Sense в серверном варианте.

Ну уж если совсем бюджетный вариант, для исключения повторной загрузки есть различные способы синхронизации файлов, в этом случае на каждой станций можно формировать копию хранилища, и работать локально.
Но серверный вариант выглядит более предпочтительным, хоть и не бесплатным.
Название: Re: API Goole Analitics
Отправлено: asdlegioner от 20 ноября 2014, 10:58:22
Цитата: admin от 20 ноября  2014, 10:56:35  
Зачем FTP, если в одной сети то достаточно папки с настроенным доступом.
А вообще для этих целей служит Qlikview Server либо Sense в серверном варианте.

Нужно именно удаленно.) Qlikview Server пока не по карману, 70к. ))
Название: Re: API Goole Analitics
Отправлено: admin от 20 ноября 2014, 11:18:55
В таком случае - синхронизация папок.
Название: Re: API Goole Analitics
Отправлено: asdlegioner от 20 ноября 2014, 11:19:34
Цитата: admin от 20 ноября  2014, 11:18:55  
В таком случае - синхронизация папок.

Это что такое?)
Название: Re: API Goole Analitics
Отправлено: admin от 20 ноября 2014, 12:17:46
http://yandex.ru/yandsearch?clid=1923018&text=%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BE%D0%BA%20ftp (http://yandex.ru/yandsearch?clid=1923018&text=%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BE%D0%BA%20ftp)
Название: Re: API Goole Analitics
Отправлено: admin от 20 ноября 2014, 02:51:04
Кстати, встречался с использованием Яндекс-диска для синхронизации между удаленными станциями.
Вот уж чего не следует делать, так использовать такие сервисы в работе.
Название: Re: API Goole Analitics
Отправлено: asdlegioner от 20 ноября 2014, 02:55:56
Цитата: admin от 20 ноября  2014, 02:51:04  
Кстати, встречался с использованием Яндекс-диска для синхронизации между удаленными станциями.
Вот уж чего не следует делать, так использовать такие сервисы в работе.

То-есть?
Название: Re: API Goole Analitics
Отправлено: admin от 21 ноября 2014, 08:03:38
В целях синхронизации папки на сервере с локальными папками удаленных компьютеров не стоит использовать интернет-сервисы, типа Goole-диск, Яндекс-диск и т.п.
Для этих целей существуют другие решения, безопасные и проверенные временем. Эти вопросы уже из области системного администрирования.
Название: Re: API Goole Analitics
Отправлено: asdlegioner от 21 ноября 2014, 09:18:31
Это извращение уже.) vps или vds будет, смотря какая нагрузка пойдет. А так в идеале хочется лицензию qlikwiev сервер.