L’analyse de CA Induit permet de voir pour un produit donné la part de CA des autres produit de la commande. On peut ainsi contrôler par exemple si un produit d’appel permet de faire de l’Upsell sur les commandes où il est acheté.
Il n’est pas possible de le faire actuellement dans la Viz de Biron car cela demande de pouvoir associer à un produit d’une commande tout le CA de cette commande.
Nous pouvons contourner cette limite grâce au NexusQL.
Pour réaliser l’analyse, nous aurons besoin de plusieurs requêtes pour:
Dans cette première requête on cherche à avoir une ligne par commande et par produit. On va donc aller chercher :
DIMENSION( 'order_id' )DIMENSION( 'product_name' )metric( 'transactions_order_date.billing_ttc' )<aside> 💡 En ajoutant ici un filtre sur la dimension Produit - Category, on pourra orienter l’analyse sur tout le CA Induit généré PAR une catégorie en particulier Ex : Filtre sur Chaussure → “Quelle est la part de CA Induit quand je vend des Chaussures”
</aside>
SELECT
DIMENSION( 'order_id' ) AS `order_id`,
DIMENSION( 'product_name' ) AS `Produit - Nom`,
metric( 'transactions_order_date.billing_ttc' ) AS `CA Produit TTC`
FROM
datamodel
WHERE
refDate BETWEEN '2022-01-01' AND '2022-12-31'
AND DIMENSION( 'product_name' ) != 'na'
GROUP BY
`order_id`,
`Produit - Nom`
On cherche ici à récupérer le CA total de chaque commande. C’est une requête simple où l’on va chercher :
<aside> 💡 Si on rajoute ici un filtre sur la catégorie de produit, on pourra faire l’analyse du CA Induit généré SUR une catégorie de produit particulier : Ex : Même cas qu’au dessus si je filtre ici sur Chaussettes → “Quelle est part de CA Induit sur les Chaussettes quand je vend des Chaussures”
</aside>
SELECT
DIMENSION( 'order_id' ) AS `order_id`,
metric( 'transactions_order_date.billing_ttc' ) AS `CA TTC`
FROM
datamodel
WHERE
refDate BETWEEN '2022-01-01' AND '2022-12-31'
GROUP BY
order_id
Il ne reste plus qu’a faire le lien entre nos deux première requêtes grâce à un LEFT JOIN sur la clé commune des deux tables Produit - Nom et je GROUP BY par Produit pour avoir une analyse par produit.
On peut alors chercher les données qui nous intéressent des deux précédentes requêtes.
Ici, je vais mettre côte à côte mon CA de produit et mon CA total des commandes et calculer le CA Induit en faisant la différence.
Je pousse un peu plus loin avec une analyse du panier moyen induit
Pour être sur d’avoir des données pertinentes, je vais enlever les produits vendus dans moins de 100 commandes. Et je vais ordonner mes commandes par Panier Moyen Induit décroissant pour dégager un top produit
SELECT
t1.`Produit - Nom` AS `Produit - Nom`,
COUNT( ) AS `Nb Commandes`,
sum(t1.`CA Produit TTC`) AS `CA Total du produit`,
sum(t2.`CA TTC`) AS `CA Total des commandes contenant le produit`,
sum(t2.`CA TTC` - t1.`CA Produit TTC`) AS `CA Induit TTC`,
ROUND( `CA Total du produit` / `Nb Commandes`, 2 ) AS `CA Moyen Produit`,
ROUND( `CA Total des commandes contenant le produit` / `Nb Commandes`, 2 ) AS `Panier Moyen`,
ROUND( `CA Induit TTC` / `Nb Commandes`, 2 ) AS `Panier Moyen Induit`
FROM
*{Requête Commande par Produit}* AS t1
LEFT JOIN *{Requête Commande Totale}* AS t2
ON t1.order_id = t2.order_id
GROUP BY
t1.`Produit - Nom`
HAVING
`Nb Commandes` > 100
ORDER BY
`Panier Moyen Induit` DESC;
SELECT
t1.`Produit - Nom`,
COUNT( ) AS `Nb Commandes`,
sum(t1.`CA Produit TTC`) AS `CA Total du produit`,
sum(t2.`CA TTC`) AS `CA Total des commandes contenant le produit`,
sum(t2.`CA TTC` - t1.`CA Produit TTC`) AS `CA Induit TTC`,
ROUND( `CA Total du produit` / `Nb Commandes`, 2 ) AS `CA Moyen Produit`,
ROUND( `CA Total des commandes contenant le produit` / `Nb Commandes`, 2 ) AS `Panier Moyen`,
ROUND( `CA Induit TTC` / `Nb Commandes`, 2 ) AS `Panier Moyen Induit`
FROM
( SELECT
DIMENSION( 'order_id' ) AS `order_id`,
DIMENSION( 'product_name' ) AS `Produit - Nom`,
metric( 'transactions_order_date.billing_ttc' ) AS `CA Produit TTC`
FROM
datamodel
WHERE
refDate BETWEEN '2022-01-01' AND '2022-12-31'
AND DIMENSION( 'product_name' ) != 'na'
GROUP BY
`order_id`,
`Produit - Nom` ) AS t1
LEFT JOIN ( SELECT
DIMENSION( 'order_id' ) AS `order_id`,
metric( 'transactions_order_date.billing_ttc' ) AS `CA TTC`
FROM
datamodel
WHERE
refDate BETWEEN '2022-01-01' AND '2022-12-31'
GROUP BY
order_id ) AS t2
ON t1.order_id = t2.order_id
GROUP BY
t1.`Produit - Nom`
HAVING
`Nb Commandes` > 100
ORDER BY
`Panier Moyen Induit` DESC;