Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Ноябрь 21, 2017, 03:50:41 am

Автор Тема: API Goole Analitics  (Прочитано 4215 раз)

Оффлайн asdlegioner

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
API Goole Analitics
« : Ноябрь 19, 2014, 12:05:58 pm »
Доброго времени суток.

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

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #1 : Ноябрь 19, 2014, 12:39:42 pm »
День добрый.

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


Оффлайн asdlegioner

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #2 : Ноябрь 19, 2014, 12:43:53 pm »
Вся загвоздка в ограничение данных, нельзя загружать по API больше 10000 строк за раз в сутки.((

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

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

Re: API Goole Analitics
« Ответ #2 : Ноябрь 19, 2014, 12:43:53 pm »

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #3 : Ноябрь 19, 2014, 01:07:57 pm »
Сделай загрузчик и привяжи его на расписание.
Пусть каждый день формирует файлы qvd с суффиксом даты, а а приложении для пользователя  просто загрузишь по маске filename*.qvd.
Неудобный интерфейс SENSE ? Для разработчика, может быть. Для пользователя - спорный вопрос.
Версия Qlikview не пробная, а с ограничениями. Ограничение доступа присутствует.

Оффлайн asdlegioner

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #4 : Ноябрь 19, 2014, 01:40:14 pm »
А вот с этого момента можно подробней, это получаться я смогу сделать некий файл в который каждый день при запуске программы будут записываться данные по API запросу? А как это технически все реализовать, а то уже хотел заказывать скрипт который будет каждый день вести сбор данный по API запросу в одну базу excel.


Сделай загрузчик и привяжи его на расписание.
Пусть каждый день формирует файлы qvd с суффиксом даты, а а приложении для пользователя  просто загрузишь по маске filename*.qvd.


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

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #5 : Ноябрь 19, 2014, 02:06:31 pm »
Почитай в руководстве про QVD файлы.
Можно сделать двухступенчатую схему.
Первый скрипт без интерфейса грузит данные и складывает их в каталог в формате QVD или CSV
А пользовательское приложение уже работает только  с этой папкой, т.е. грузит только QVD файлики.

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

Оффлайн asdlegioner

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #6 : Ноябрь 19, 2014, 03:42:24 pm »
Получается так:

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


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

Re: API Goole Analitics
« Ответ #6 : Ноябрь 19, 2014, 03:42:24 pm »

Оффлайн asdlegioner

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #7 : Ноябрь 19, 2014, 04:36:46 pm »
Не знаю правильный способ или нет, но файл создается и все данные в него загружаются. Остаються вопросы по автоматизации.)

Есть 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

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #8 : Ноябрь 20, 2014, 08:14:07 am »
Итак, по порядку.
Для подстановки параметра в строку запроса нам его следует предварительно вычислить и преобразовать в соответствующий формат, который отличен от формата по умолчанию.
Это делается очень просто:
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

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #9 : Ноябрь 20, 2014, 10:09:05 am »
Спасибо большое за помощь.

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



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

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

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #10 : Ноябрь 20, 2014, 10:27:23 am »
Ну, все намного проще ))
Итак, что нам надо.
Сервер, или станцию которая работает каждый день.
На этой станции ставим и создаем приложение без интерфейса, только скрипт, скажем load.qvw
Настраиваем задание на запуск по времени бат файла с одной строкой
"C:\Program Files\QlikView\qv.exe" /r load.qvw
В скрипте прописываем описанный выше алгоритм, который будет формировать файлы QVD и сохранять их в папку. Таким образом мы создаем хранилище даных.
Все, на этом контакт с гуглем завершен. Никаких дополнительных запросов за месяц не надо будет делать. Мы сформируем эти сведения из тех данных что у нас накопились в нашем хранилище.

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

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

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

Оффлайн asdlegioner

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #11 : Ноябрь 20, 2014, 10:46:01 am »
А классная идея собирать все данные на отдельном серваке, а пользователь будет загружать данные удаленно с ftp если так возможно и ему не надо париться со сбором данных.) Только один минус, траф будет гоняться большой когда все разрастется, и скорость загрузки данных будет низкая.((

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #12 : Ноябрь 20, 2014, 10:56:35 am »
Зачем FTP, если в одной сети то достаточно папки с настроенным доступом.
А вообще для этих целей служит Qlikview Server либо Sense в серверном варианте.

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

Оффлайн asdlegioner

  • Наставник
  • **
  • Сообщений: 63
  • Рейтинг: +2/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #13 : Ноябрь 20, 2014, 10:58:22 am »
Зачем FTP, если в одной сети то достаточно папки с настроенным доступом.
А вообще для этих целей служит Qlikview Server либо Sense в серверном варианте.

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

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: API Goole Analitics
« Ответ #14 : Ноябрь 20, 2014, 11:18:55 am »
В таком случае - синхронизация папок.