Aller au contenu

Les vues

Tout ce que lit eodia insights est dans le schéma analytics de la base. Il ne contient que des vues, en lecture seule pour le rôle eodia_analytics. Trois règles :

  • chaque vue porte site_id : la règle de ligne d’insights s’y accroche, pour qu’un tableau de bord ne montre qu’un site ;
  • chaque vue et chaque colonne a son commentaire, en français : insights les lit et les affiche dans son écran Structure et dans le contexte de son assistant IA ;
  • on n’y trouve ni adresse IP, ni secret, ni personne au sens d’un compte de l’application.

Les jours et les heures (day, hour) sont dans le fuseau horaire du site. Les types sont lisibles par le connecteur PostgreSQL de Trino : pas de tableaux, jsonb lu en json.

Une ligne par page affichée, y compris les changements d’adresse sans rechargement. La campagne et le canal sont ceux de la visite.

ColonneContenu
at, day, hourl’instant ; le jour et l’heure dans le fuseau du site
page_view_id, session_idla page vue, la visite
visitor_id, visitor_kindle visiteur : hachage du jour (daily), cookie de mesure (cookie), ou aucun (none)
new_visitoravec un cookie : vrai le jour de sa création, faux ensuite ; vide sans cookie
user_id, personle visiteur connecté, rapproché sur toute la visite ; la personne à compter
entryvrai pour la page d’entrée de la visite
hostname, path, titlela page, sans requête
referrer_hostle site référent externe
source, medium, campaign, term, content, channella campagne et le canal de la visite
click_id_typele type d’identifiant de clic (gclid, fbclid…), jamais sa valeur
country, device, browser, os, language, viewport_widthle pays (ISO 3166), l’appareil, le navigateur, le système, la langue, la largeur de fenêtre
engaged_seconds, scroll_depthle temps d’engagement, la profondeur de défilement (%)
viascript (navigateur) ou server (collecte côté serveur)

Une ligne par visite. Une visite se termine après 30 minutes d’inactivité, ou quand une page arrive avec une autre campagne ou d’un autre site référent.

ColonneContenu
started_at, ended_at, day, hourle début, la dernière activité
duration_seconds, engaged_secondsla durée, le temps d’engagement cumulé
visitor_id, visitor_kind, new_visitor, user_id, personle visiteur et la personne
page_views, eventsle nombre de pages vues et d’événements
conversions, conversion_valueles objectifs atteints et leur valeur
engaged, bouncevisite engagée comme dans GA4 (10 s d’engagement, 2 pages vues ou une conversion) ; rebond sinon
entry_path, exit_pathles pages d’entrée et de sortie
referrer_host, source, medium, campaign, term, content, channel, click_id_typel’origine de la visite
country, device, browser, os, languagele visiteur

events : une ligne par événement — track, mesures automatiques, commerce en ligne, envois du serveur.

ColonneContenu
at, day, event_idl’instant, le jour, l’événement
name, label, declaredle nom ; le libellé et vrai si l’événement est déclaré
page_view_id, session_id, pathla page et la visite
visitor_id, visitor_kind, user_id, personle visiteur et la personne
propsles propriétés, en JSON (items compris)
viascript ou server

event_properties met les propriétés à plat : une ligne par événement et par propriété — event, property, type, et une colonne par type : value_text, value_number, value_boolean, value_time.

Générées : une vue par événement déclaré, analytics.evt_newsletter_signup, analytics.evt_purchase… Elles reprennent les colonnes communes (site_id, at, day, event_id, session_id, page_view_id, visitor_id, user_id, person, path, via) et ajoutent une colonne typée par propriété déclarée, avec son libellé et sa description en commentaire. Elles sont régénérées à chaque changement des métadonnées.

SELECT placement, count(*) AS inscriptions
FROM analytics.evt_newsletter_signup
WHERE day >= current_date - INTERVAL '30' DAY
GROUP BY placement
VueUne ligne parColonnes principales
conversionsobjectif atteint et visitegoal_id, goal, conversion_id, session_id, person, path, value
purchasescommande ou remboursement (dédoublonné sur transaction_id)kind, transaction_id, value (négatif pour un remboursement), currency, tax, shipping, coupon, items, session_id, person, received, confirmed
commerce_itemsarticle et étapestep, transaction_id, item_id, item_name, category, brand, variant, price, quantity, revenue, currency, position

Voir le commerce en ligne.

VueUne ligne parColonnes principales
touchpointsvisite d’une personne, dans l’ordreperson, session_id, started_at, rank, channel, source, medium, campaign
attributionconversion, visite et modèlemodel, conversion_kind, conversion, converted_at, session_id, touchpoint, touchpoints, channel, credit, value, days_before

Voir l’attribution.

VueUne ligne parColonnes principales
clicksclicpage_view_id, path, selector, zone, x, y (0 à 1 dans l’élément), viewport_width, device
zone_viewszone et page vuezone, label, visible_seconds, seen (visible au moins une seconde)

Voir les zones.

VueContenu
sitesles sites : name, key, domains, timezone, tracking_mode, identified_visitors, attribution_days, created_at, archived — pour afficher des noms
annotationsles annotations, une ligne par site
cls_<nom>générées : les classifications importées, key et une colonne par attribut
event_definitionsles événements déclarés : name, label, description, system, properties
zonesles zones déclarées : zone, label, description
goalsles objectifs : name, kind (page ou event), path_pattern, event_name, value_mode, value
channelsles canaux dans l’ordre de leurs règles : position, channel, description
-- Visites et taux de rebond par canal, ce mois-ci
SELECT channel, count(*) AS visites, avg(CASE WHEN bounce THEN 1.0 ELSE 0 END) AS rebond
FROM analytics.sessions
WHERE day >= date_trunc('month', current_date)
GROUP BY channel
ORDER BY visites DESC
-- Personnes uniques par semaine (cookie ou identité rapprochée)
SELECT date_trunc('week', day) AS semaine, count(DISTINCT person) AS personnes
FROM analytics.sessions
WHERE visitor_kind = 'cookie'
GROUP BY 1
ORDER BY 1

eodia analytics est un logiciel libre d’Eodia.