Optimiser les requêtes planifiées BigQuery GA4
Depuis que Google a introduit GA4 en octobre 2020, tout le monde discute UA contre GA4 au lieu de se concentrer sur le vrai prix : extraire la valeur commerciale des données ! En supposant que vous ayez dépassé cette étape et que vous ayez maintenant réussi la migration vers GA4, lié vos propriétés à BigQuery et commencé à collecter vos impressionnantes données GA4. Vous envisagez peut-être de répliquer vos rapports UA dans BigQuery à l'aide de GA4 ou de produire de nouveaux rapports automatisés GA4.
En plus du tout nouveau schéma de données basé sur les événements, Google met à jour l'exportation quotidienne jusqu'à 72 heures après la date du tableau. Pourquoi demandes-tu? Pour prendre en charge tous les événements échoués ou retardés qui pourraient provenir du protocole de mesure.
Cela soulève une question essentielle : quel est le moyen le plus efficace de planifier une requête quotidienne sans dupliquer les données ou manquer les dernières mises à jour ? Il existe quatre options apparentes :
- La première consiste à interroger chaque jour toute la plage de dates et à écraser les résultats… mais cette approche est trop CHER !
- La seconde consiste à planifier une requête distincte pour chacun des trois jours les plus récents… mais vous devrez alors mettre à jour trois requêtes chaque fois que vous apporterez des modifications.
- La troisième option consiste à interroger les trois derniers jours, puis à supprimer les doublons… mais ce n'est pas la solution la plus propre.
- La quatrième option consiste à configurer une fonction Cloud qui appelle une requête planifiée lorsque les données sont mises à jour ou atterrissent via Cloud Logging. Une solution solide, bien sûr, mais qui nécessite du Python/Node.js sérieux, etc. savoir-faire et prend du temps pour mettre en place un tel pipeline.
#DECLARE VARIABLES AND TIMEFRAME
DECLARE
set_date date;
DECLARE
final_date DEFAULT DATE_ADD(CURRENT_DATE(),INTERVAL -1 day);
DECLARE
initial_date date DEFAULT DATE_ADD(CURRENT_DATE(),INTERVAL -3 day);
DECLARE
formatted_date STRING;
SET set_date = initial_date;
# START FOR LOOP
LOOP
SET
set_date = DATE_ADD(set_date,INTERVAL 1 day);
SET
formatted_date = FORMAT_DATE("%Y%m%d", set_date);
IF
set_date > final_date THEN
LEAVE;
END IF;
EXECUTE IMMEDIATE
#FORMAT QUERY
FORMAT("""
CREATE OR REPLACE TABLE
`{PROJECT_ID}.{DATASET_ID}.ga4_revenue_%s` AS
############ REVENUE FOR EACH USER ###############
(
SELECT
user_pseudo_id,
SUM(ecommerce.purchase_revenue) as revenue
FROM
`{PROJECT_ID}.{DATASET_ID}.events_*`
WHERE
(_TABLE_SUFFIX = '%s') AND user_pseudo_id IS NOT NULL
GROUP BY
1
ORDER BY
user_pseudo_id)
"""
, formatted_date, formatted_date);
END LOOP;
Cette requête a réduit le coût quotidien de l'interrogation de toute la plage de dates d'environ 200 % et plus (les coûts et le pourcentage varieront en fonction de votre volume de données historiques, bien sûr). Ainsi, non seulement vous tirez une grande valeur de vos données, mais vous économisez également beaucoup d'argent et maintenez vos rapports de données à jour.
En m'aventurant dans le nouvel univers GA4 au sein de BigQuery, je partagerai mes connaissances dans une série de blogs.
Profitez de la boucle For dans BigQuery et ne vous contentez pas d'extraire de la valeur de vos données : faites-le avec style !
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































