API Goole Analitics

Автор asdlegioner, 19 ноября 2014, 12:05:58

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

asdlegioner

Доброго времени суток.

С помощью компоновщика формирую запрос к определенным данным 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]

admin

День добрый.

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


asdlegioner

#2
Вся загвоздка в ограничение данных, нельзя загружать по API больше 10000 строк за раз в сутки.((

Я забросил Qlik sense, там очень неудобный интерфейс приложения получается.) А в пробной версии qlikviev можно защитить готовое приложение от пользователя?

admin

Сделай загрузчик и привяжи его на расписание.
Пусть каждый день формирует файлы qvd с суффиксом даты, а а приложении для пользователя  просто загрузишь по маске filename*.qvd.
Неудобный интерфейс SENSE ? Для разработчика, может быть. Для пользователя - спорный вопрос.
Версия Qlikview не пробная, а с ограничениями. Ограничение доступа присутствует.

asdlegioner

А вот с этого момента можно подробней, это получаться я смогу сделать некий файл в который каждый день при запуске программы будут записываться данные по API запросу? А как это технически все реализовать, а то уже хотел заказывать скрипт который будет каждый день вести сбор данный по API запросу в одну базу excel.


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


В QlikView компактней все и удобней работать с картинками, а то в сенсе две таблицы занели все рабочее пространство.
ЦитироватьНеудобный интерфейс SENSE ? Для разработчика, может быть. Для пользователя - спорный вопрос.
Версия Qlikview не пробная, а с ограничениями. Ограничение доступа присутствует.

admin

Почитай в руководстве про QVD файлы.
Можно сделать двухступенчатую схему.
Первый скрипт без интерфейса грузит данные и складывает их в каталог в формате QVD или CSV
А пользовательское приложение уже работает только  с этой папкой, т.е. грузит только QVD файлики.

Что касается интерфейса SENSE, так это его особенность, основная можно сказать.
можно добавлять несколько объектов они будут автомасштабироваться.
И под разрешение экрана пользователя в том числе.

asdlegioner

Получается так:

Есть скрипт загрузка данных по 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;


asdlegioner

Не знаю правильный способ или нет, но файл создается и все данные в него загружаются. Остаються вопросы по автоматизации.)

Есть 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" писалась текущая дата, и скрипт загружал каждый день данные в один и тот же файл.

admin

Итак, по порядку.
Для подстановки параметра в строку запроса нам его следует предварительно вычислить и преобразовать в соответствующий формат, который отличен от формата по умолчанию.
Это делается очень просто:
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 загрузит все файлы в одну таблицу.
Далее, уже по ситуации, либо оставить как есть. либо сделать обработчик, формирующий по одному файлу на каждый месяц и при наличии месячного файла грузить данные из него, а текущий месяц грузить из ежедневных. Ну и так далее, это уже алгоритмика.

asdlegioner

#9
Спасибо большое за помощь.

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



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

А как тогда делать отбор данных по дате если она не фигурирует в таблице а указана только в имени файла XYZ_14-11-2014.qvd?

admin

#10
Ну, все намного проще ))
Итак, что нам надо.
Сервер, или станцию которая работает каждый день.
На этой станции ставим и создаем приложение без интерфейса, только скрипт, скажем load.qvw
Настраиваем задание на запуск по времени бат файла с одной строкой
"C:\Program Files\QlikView\qv.exe" /r load.qvw
В скрипте прописываем описанный выше алгоритм, который будет формировать файлы QVD и сохранять их в папку. Таким образом мы создаем хранилище даных.
Все, на этом контакт с гуглем завершен. Никаких дополнительных запросов за месяц не надо будет делать. Мы сформируем эти сведения из тех данных что у нас накопились в нашем хранилище.

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

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

Да, Qlikview должен устанавливаться под тем пользователем, от имени которого будет запускаться задание. Если это сервер, то потребуется назначить права на запуск задания. Это уже вопрос к системному администратору.

asdlegioner

#11
А классная идея собирать все данные на отдельном серваке, а пользователь будет загружать данные удаленно с ftp если так возможно и ему не надо париться со сбором данных.) Только один минус, траф будет гоняться большой когда все разрастется, и скорость загрузки данных будет низкая.((

admin

#12
Зачем FTP, если в одной сети то достаточно папки с настроенным доступом.
А вообще для этих целей служит Qlikview Server либо Sense в серверном варианте.

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

asdlegioner

Цитата: admin от 20 ноября  2014, 10:56:35  
Зачем FTP, если в одной сети то достаточно папки с настроенным доступом.
А вообще для этих целей служит Qlikview Server либо Sense в серверном варианте.

Нужно именно удаленно.) Qlikview Server пока не по карману, 70к. ))

admin

В таком случае - синхронизация папок.

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