Skip to content

Commit 942f976

Browse files
authored
Mise à jour d'elementary et ajouts des modèles relatifs aux statistiques de campagnes (#2880)
* Updates elementary to latest version Also adds two models to monitor campaigns statistics. * Fixes where clause issue * true to True * Updates where clause * Adds distance filter
1 parent 51b0e03 commit 942f976

9 files changed

Lines changed: 404 additions & 13 deletions

dbt/models/metrics/_monthly_stats_acceptability_rules.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ version: 2
22
models:
33
- name: monthly_stats_acceptability_rules
44
description: >
5-
Estimation du nombre de journeys ne respectant pas les règles d'acceptabilité et du montant d'incitation estimé associé.
6-
Les paramètres pris pour l'estimation sont 4% des trajets ne respectant pas les règles pour un montant moyen de 1,045€.
7-
Le montant moyen correspond à la moyenne entre l'incitation moyenne des trajets capturés en S1 2024 (avec Ynstant)
8-
et celle des trajets capturés en S2 2023 (Sans Ynstant).
5+
Estimation du nombre de journeys ne respectant pas les règles d'acceptabilité et du montant d'incitation
6+
estimé associé.
7+
Les paramètres pris pour l'estimation sont 4% des trajets ne respectant pas les règles pour un montant
8+
moyen de 1,045€.
9+
Le montant moyen correspond à la moyenne entre l'incitation moyenne des trajets capturés en S1 2024
10+
(avec Ynstant) et celle des trajets capturés en S2 2023 (Sans Ynstant).
911
Voir https://www.notion.so/KPIs-r-gle-acceptabilit-191994bec93180c38b76e8560ad1f891?pvs=4.
1012
columns:
11-
- name: mois
13+
- name: month
1214
data_type: timestamp with time zone
1315
- name: journeys_count
1416
data_type: numeric
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
version: 2
2+
models:
3+
- name: monthly_stats_campaigns_revenues
4+
columns:
5+
- name: month
6+
data_type: timestamp with time zone
7+
- name: siret
8+
data_type: character varying
9+
- name: legal_name
10+
data_type: character varying
11+
- name: journeys_count
12+
data_type: bigint
13+
- name: avg_driver_revenue
14+
data_type: numeric
15+
- name: avg_distance
16+
data_type: numeric
17+
- name: min_revenue
18+
data_type: integer
19+
- name: avg_driver_revenue_per_km
20+
data_type: numeric
21+
- name: avg_driver_revenue_per_km_18_30
22+
data_type: numeric
23+
- name: avg_driver_revenue_per_km_filtered
24+
data_type: numeric
25+
- name: avg_driver_revenue_per_km_filtered_18_30
26+
data_type: numeric
27+
- name: avg_passenger_contribution_per_km
28+
data_type: numeric
29+
- name: avg_passenger_contribution_per_km_18_30
30+
data_type: numeric
31+
- name: avg_passenger_contribution_per_km_filtered
32+
data_type: numeric
33+
- name: avg_passenger_contribution_per_km_filtered_18_30
34+
data_type: numeric
35+
- name: avg_incentive_per_km
36+
data_type: numeric
37+
- name: avg_incentive_per_km_18_30
38+
data_type: numeric
39+
- name: avg_incentive_per_km_filtered
40+
data_type: numeric
41+
- name: avg_incentive_per_km_filtered_18_30
42+
data_type: numeric
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
version: 2
2+
models:
3+
- name: monthly_stats_campaigns_revenues_by_operator
4+
columns:
5+
- name: month
6+
data_type: timestamp with time zone
7+
- name: operator_id
8+
data_type: integer
9+
- name: operator_name
10+
data_type: character varying
11+
- name: siret
12+
data_type: character varying
13+
- name: legal_name
14+
data_type: character varying
15+
- name: journeys_count
16+
data_type: bigint
17+
- name: avg_driver_revenue
18+
data_type: numeric
19+
- name: avg_distance
20+
data_type: numeric
21+
- name: min_revenue
22+
data_type: integer
23+
- name: avg_driver_revenue_per_km
24+
data_type: numeric
25+
- name: avg_driver_revenue_per_km_18_30
26+
data_type: numeric
27+
- name: avg_driver_revenue_per_km_filtered
28+
data_type: numeric
29+
- name: avg_driver_revenue_per_km_filtered_18_30
30+
data_type: numeric
31+
- name: avg_passenger_contribution_per_km
32+
data_type: numeric
33+
- name: avg_passenger_contribution_per_km_18_30
34+
data_type: numeric
35+
- name: avg_passenger_contribution_per_km_filtered
36+
data_type: numeric
37+
- name: avg_passenger_contribution_per_km_filtered_18_30
38+
data_type: numeric
39+
- name: avg_incentive_per_km
40+
data_type: numeric
41+
- name: avg_incentive_per_km_18_30
42+
data_type: numeric
43+
- name: avg_incentive_per_km_filtered
44+
data_type: numeric
45+
- name: avg_incentive_per_km_filtered_18_30
46+
data_type: numeric

dbt/models/metrics/_monthly_stats_interoperator_rules.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ version: 2
22
models:
33
- name: monthly_stats_interoperator_rules
44
description: >
5-
Estimation du nombre de journeys ne respectant pas les règles antifraudes interopérateurs et du montant d'incitation estimé associé.
6-
Les paramètres pris pour l'estimation sont 7% des trajets ne respectant pas les règles ce qui conerne également 7% des incitations.
5+
Estimation du nombre de journeys ne respectant pas les règles antifraudes interopérateurs et du
6+
montant d'incitation estimé associé.
7+
Les paramètres pris pour l'estimation sont 7% des trajets ne respectant pas les règles ce qui conerne
8+
également 7% des incitations.
79
Voir https://www.notion.so/Calculer-le-montant-de-Fraude-inter-op-rateur-vit-1ca994bec93180ae817bee35f00a847c?pvs=4.
810
columns:
9-
- name: mois
11+
- name: month
1012
data_type: timestamp with time zone
1113
- name: journeys_count
1214
data_type: numeric
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
{{
2+
config(
3+
materialized = 'incremental',
4+
unique_key = ['month',"siret"],
5+
incremental_strategy = "delete+insert",
6+
indexes = [{"columns":['month',"siret"],"unique":True}]
7+
)
8+
}}
9+
with trips as (
10+
select
11+
c._id,
12+
oi.siret,
13+
max(c.start_datetime) as start_datetime,
14+
max(c.distance) as distance,
15+
max(c.driver_revenue) as driver_revenue,
16+
max(c.passenger_contribution) as passenger_contribution,
17+
sum(oi.amount) as amount
18+
from carpool_v2.carpools as c
19+
left join carpool_v2.operator_incentives as oi
20+
on
21+
c._id = oi.carpool_id
22+
{% if is_incremental() %}
23+
where
24+
c.start_datetime
25+
>= coalesce((select max(month) from {{ this }}), '1900-01-01')
26+
{% else %}
27+
where c.start_datetime >= '2022-01-01'
28+
{% endif %}
29+
-- account for multiple incentives amounts for the same siret on the same trip
30+
group by 1, 2
31+
),
32+
33+
agg_data as (
34+
select
35+
date_trunc(
36+
'month', start_datetime
37+
) as month,
38+
siret,
39+
count(
40+
distinct _id
41+
) as journeys_count,
42+
count(
43+
distinct _id
44+
) filter (
45+
where distance between 18000 and 30000
46+
)
47+
as journeys_count_18_30,
48+
count(
49+
distinct _id
50+
) filter (
51+
where amount > 0
52+
)
53+
as journeys_count_filtered,
54+
count(
55+
distinct _id
56+
) filter (
57+
where (distance between 18000 and 30000) and amount > 0
58+
)
59+
as journeys_count_filtered_18_30,
60+
avg(
61+
driver_revenue / 100
62+
) as avg_driver_revenue,
63+
avg(
64+
distance / 1000
65+
) as avg_distance,
66+
min(
67+
driver_revenue / 100
68+
) as min_revenue,
69+
10
70+
* avg(
71+
driver_revenue::numeric / distance
72+
) as avg_driver_revenue_per_km,
73+
10
74+
* avg(driver_revenue::numeric / distance) filter (
75+
where distance between 18000 and 30000
76+
) as avg_driver_revenue_per_km_18_30,
77+
10
78+
* avg(driver_revenue::numeric / distance) filter (
79+
where amount > 0
80+
) as avg_driver_revenue_per_km_filtered,
81+
10
82+
* avg(driver_revenue::numeric / distance) filter (
83+
where (distance between 18000 and 30000) and amount > 0
84+
) as avg_driver_revenue_per_km_filtered_18_30,
85+
10
86+
* avg(
87+
passenger_contribution::numeric / distance
88+
) as avg_passenger_contribution_per_km,
89+
10
90+
* avg(passenger_contribution::numeric / distance) filter (
91+
where distance between 18000 and 30000
92+
) as avg_passenger_contribution_per_km_18_30,
93+
10
94+
* avg(passenger_contribution::numeric / distance) filter (
95+
where amount > 0
96+
) as avg_passenger_contribution_per_km_filtered,
97+
10
98+
* avg(passenger_contribution::numeric / distance) filter (
99+
where (distance between 18000 and 30000) and amount > 0
100+
) as avg_passenger_contribution_per_km_filtered_18_30,
101+
10
102+
* avg(
103+
amount::numeric / distance
104+
) as avg_incentive_per_km,
105+
10
106+
* avg(amount::numeric / distance) filter (
107+
where distance between 18000 and 30000
108+
) as avg_incentive_per_km_18_30,
109+
10
110+
* avg(amount::numeric / distance) filter (
111+
where amount > 0
112+
) as avg_incentive_per_km_filtered,
113+
10
114+
* avg(amount::numeric / distance) filter (
115+
where (distance between 18000 and 30000) and amount > 0
116+
) as avg_incentive_per_km_filtered_18_30
117+
from trips
118+
where distance > 0
119+
group by 1, 2
120+
order by 1
121+
)
122+
123+
select
124+
a.month,
125+
a.siret,
126+
c.legal_name,
127+
a.journeys_count,
128+
a.journeys_count_18_30,
129+
a.journeys_count_filtered,
130+
a.journeys_count_filtered_18_30,
131+
a.avg_driver_revenue,
132+
a.avg_distance,
133+
a.min_revenue,
134+
a.avg_driver_revenue_per_km,
135+
a.avg_driver_revenue_per_km_18_30,
136+
a.avg_driver_revenue_per_km_filtered,
137+
a.avg_driver_revenue_per_km_filtered_18_30,
138+
a.avg_passenger_contribution_per_km,
139+
a.avg_passenger_contribution_per_km_18_30,
140+
a.avg_passenger_contribution_per_km_filtered,
141+
a.avg_passenger_contribution_per_km_filtered_18_30,
142+
a.avg_incentive_per_km,
143+
a.avg_incentive_per_km_18_30,
144+
a.avg_incentive_per_km_filtered,
145+
a.avg_incentive_per_km_filtered_18_30
146+
from agg_data as a
147+
left join company.companies as c on a.siret = c.siret

0 commit comments

Comments
 (0)