tpitale/legato
tpitale/legato has 399 GitHub stars and 46 forks. Star changes are not measured yet. Last checked 2026-11-13 04:06 UTC. Last push 2023-05-10.
Google Analytics Reporting API Client for Ruby
Crecimiento de estrellas medido
- in 24h
- Recopilando historial
- in 7 days
- Recopilando historial
- in 15 days
- Recopilando historial
- in 1 month
- Recopilando historial
Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.
README.md
OriginalLegato: Ruby Client for the Google Analytics Core Reporting and Management API
Check out the Wiki!
Feel free to open an issue if you have a question that is not answered in the Wiki
If you've come here from Garb, welcome! There are a few changes from Garb, so you'll want to check out:
- Model Data
- Query Parameters
- And the biggest difference: Filtering
If you're not able to upgrade quite yet, Garb has been maintained https://github.com/Sija/garb
Google Analytics Management
Get an OAuth2 Access Token from Google, Read about OAuth2
access_token = OAuth2 Access Token # from GoogleCreate a New User with the Access Token
user = Legato::User.new(access_token)List the Accounts and Profiles of the first Account
user.accounts user.accounts.first.profilesList all the Profiles the User has Access to
user.profilesGet a Profile
profile = user.profiles.firstThe Profile Carries the User
profile.user == user #=> trueThe profile can also lookup its "parent" Web Property
profile.web_property
Google Analytics Model
class Exit
extend Legato::Model
metrics :exits, :pageviews
dimensions :page_path, :operating_system, :browser
end
profile.exit #=> returns a Legato::Query
profile.exit.each {} #=> any enumerable kicks off the request to GA
Metrics & Dimensions
http://code.google.com/apis/analytics/docs/gdata/dimsmets/dimsmets.html
metrics :exits, :pageviews
dimensions :page_path, :operating_system, :browser
Filtering
Create named filters to wrap query filters.
Here's what google has to say: http://code.google.com/apis/analytics/docs/gdata/v3/reference.html#filters
Examples
Inside of any Legato::Model class, the method filter is available (like metrics and dimensions).
Return entries with exits counts greater than or equal to 2000
filter(:high_exits) {gte(:exits, 2000)}
# or ...
filter :high_exits, &lambda {gte(:exits, 2000)}
Return entries with pageview metric less than or equal to 200
filter(:low_pageviews) {lte(:pageviews, 200)}
Filters with dimensions
filter(:for_browser) {|browser| matches(:browser, browser)}
Filters with OR
filter(:browsers) {|*browsers| browsers.map {|browser| matches(:browser, browser)}}
Using and Chaining Filters
Pass the profile as the first or last parameter into any filter.
Exit.for_browser("Safari", profile)
Chain two filters.
Exit.high_exits.low_pageviews(profile)
Profile gets a method for each class extended by Legato::Model
Exit.results(profile) == profile.exit
We can chain off of that method, too.
profile.exit.high_exits.low_pageviews.by_pageviews
Chaining order doesn't matter. Profile can be given to any filter.
Exit.high_exits(profile).low_pageviews == Exit.low_pageviews(profile).high_exits
Be sure to pass the appropriate number of arguments matching the lambda for your filter.
For a filter defined like this:
filter(:browsers) {|*browsers| browsers.map {|browser| matches(:browser, browser)}}
We can use it like this, passing any number of arguments:
Exit.browsers("Firefox", "Safari", profile)
Google Analytics Supported Filtering Methods
Google Analytics supports a significant number of filtering options.
Here is what we can do currently: (the operator is a method available in filters for the appropriate metric or dimension)
Operators on metrics (method => GA equivalent):
eql => '==',
not_eql => '!=',
gt => '>',
gte => '>=',
lt => '<',
lte => '<='
Operators on dimensions:
matches => '==',
does_not_match => '!=',
contains => '=~',
does_not_contain => '!~',
substring => '=@',
not_substring => '!@'
Session-level Segments
Your query can have a session-level segment, which works with filter expressions. It works like an advanced segment, except you don't have to create it beforehand, you can just specify it at query time.
Some of the numbers you'll get will be different from using a filter, since
the subset of visits matched happens before dimensions and metrics are
calculated (hover on the segment
parameter to see).
Some metrics and dimensions are not allowed for segments, see the API documentation for more details.
Note: Legato does not support Users vs Sessions, yet. The default will be sessions (the equivalent of the earlier, now removed, dynamic segments).
Defining, using and chaining segments
Return entries with exits counts greater than or equal to 2000
segment :high_exits do
gte(:exits, 2000)
end
Return entries with pageview metric less than or equal to 200
segment :low_pageviews do
lte(:pageviews, 200)
end
You can chain them
Exit.high_exits.low_pageviews(profile)
and call them directly on the profile
profile.exit.high_exits.low_pageviews
Accounts, WebProperties, Profiles, and Goals
Legato::Management::Account.all(user)
Legato::Management::WebProperty.all(user)
Legato::Management::Profile.all(user)
Legato::Management::Goal.all(user)
Other Parameters Can be Passed to a call to #results
- :start_date - The date of the period you would like this report to start
- :end_date - The date to end, inclusive
- :limit - The maximum number of results to be returned
- :offset - The starting index
- :sort - metric/dimension to sort by
- :quota_user - any arbitrary string that uniquely identifies a user (40 characters max)
- :sampling_level - 'FASTER' or 'HIGHER_PRECISION' https://developers.google.com/analytics/devguides/reporting/core/v3/reference#samplingLevel
- :segment_id - this will supersede any segments chained to the query
Real Time Reporting
https://developers.google.com/analytics/devguides/reporting/realtime/v3/ https://developers.google.com/analytics/devguides/reporting/realtime/dimsmets/
GA provides an endpoint to do basic reporting in near-realtime. Please read the above documentation to know which features (and dimentsion/metrics) are or are not available. It is also only available in beta so you must already have access.
Inside of Legato, you can simply add realtime to your query (#results returns a Query instance), like this:
Exit.results(profile).realtime
The results you iterate over (with .each, etc) will be from the realtime reporting API.
You can also call realtime on your model to get a new Query instance with realtime API set.
query = Exit.realtime
query.realtime? #=> true
query.tracking_scope #=> 'rt'
Managing Quotas
Assigning a quota_user or user_ip on a user instance will be used by management and query requests.
user = Legato::User.new(access_token)
user.quota_user = 'some_unique_user_identifier'
# OR
user.user_ip = ip_address_from_a_web_user_or_something
Explorar proyectos relacionados
Asabeneh/30-Days-Of-Python
El reto de programación 30 Days of Python es una guía paso a paso para aprender el lenguaje de programación Python en 30 días. Este reto puede llevar más de 100 días. Sigue tu propio ritmo. Estos vídeos también pueden ayudarte: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,673 estrellasgrafana/grafana
Plataforma abierta y componible de observabilidad y visualización de datos. Visualiza métricas, registros y trazas de múltiples fuentes, como Prometheus, Loki, Elasticsearch, InfluxDB, Postgres y muchas más.
77,876 estrellasredis/redis
Para los desarrolladores que crean aplicaciones en tiempo real basadas en datos, Redis es la opción preferida, la más rápida y la de más funciones como caché, servidor de estructuras de datos y motor de consultas de documentos y vectores.
77,485 estrellasapache/superset
Apache Superset es una plataforma de visualización y exploración de datos.
75,509 estrellas

