diff --git a/dbt/models/legacy/oneshot/recrutements.sql b/dbt/models/legacy/oneshot/recrutements.sql deleted file mode 100644 index 4b68a3ba..00000000 --- a/dbt/models/legacy/oneshot/recrutements.sql +++ /dev/null @@ -1,51 +0,0 @@ -/* -L'objectif est d'avoir un suivi annuel des recrutements en se basant sur les déclarations mensuelles des structures dans l'extranet asp -*/ - -select - /* On prend le min des dates de recrutement par salarié et par convention */ - etablissement_public_territorial, - nom_epci, - niveau_formation_salarie, - genre_salarie, - rsa, - type_siae, - identifiant_salarie, - id_structure_asp, - structure_denomination, - commune_structure, - code_insee_structure, - nom_departement_af, - nom_region_af, - af_numero_convention, - af_numero_annexe_financiere, - zrr, - qpv, - tranche_age, - rqth, - min(date_recrutement) as min_date_recrutement, - date_part('year', date_recrutement) as annee_recrutement -from - {{ ref('saisies_mensuelles_iae') }} -where date_part('year', date_recrutement) >= (date_part('year', current_date) - 2) -group by - annee_recrutement, - etablissement_public_territorial, - nom_epci, - niveau_formation_salarie, - genre_salarie, - rsa, - type_siae, - identifiant_salarie, - id_structure_asp, - structure_denomination, - commune_structure, - code_insee_structure, - nom_departement_af, - nom_region_af, - af_numero_convention, - af_numero_annexe_financiere, - zrr, - qpv, - tranche_age, - rqth diff --git a/dbt/models/marts/recrutements.sql b/dbt/models/marts/recrutements.sql new file mode 100644 index 00000000..7b121ac2 --- /dev/null +++ b/dbt/models/marts/recrutements.sql @@ -0,0 +1,51 @@ +select + ctr.contrat_id_ctr, + ctr.contrat_id_structure, + ctr.contrat_id_pph, + ctr.contrat_date_embauche, + emi.emi_afi_id, + emi.emi_sme_annee, + emi.emi_sme_mois, + af.af_numero_annexe_financiere, + salarie.genre_salarie, + salarie.tranche_age, + salarie.qpv, + salarie.zrr, + rnf.rnf_libelle_niveau_form_empl as niveau_formation_salarie, + struct.structure_denomination, + struct.structure_adresse_admin_commune, + struct.structure_adresse_admin_code_insee, + app_geo.code_dept as departement_structure, + app_geo.nom_departement as nom_departement_structure, + app_geo.code_region as region_structure, + app_geo.nom_region as nom_region_structure, + app_geo.nom_epci as epci_structure, + case + when ctr.contrat_salarie_rqth then 'OUI' + else 'NON' + end as salarie_rqth, + case + when ctr.contrat_salarie_rsa = 'OUI-M' then 'OUI' + when ctr.contrat_salarie_rsa = 'OUI-NM' then 'OUI' + else 'NON' + end as salarie_brsa, + split_part(ctr.contrat_mesure_disp_code, '_', 1) as type_structure_entree, + date_trunc('month', to_date(ctr.contrat_date_embauche, 'DD/MM/YYYY')) as mois_entree +from {{ source('fluxIAE', 'fluxIAE_ContratMission') }} as ctr +left join {{ source('fluxIAE', 'fluxIAE_EtatMensuelIndiv') }} as emi + on ctr.contrat_id_pph = emi.emi_pph_id and ctr.contrat_id_ctr = emi.emi_ctr_id +left join {{ ref('fluxIAE_AnnexeFinanciere_v2') }} as af + on emi.emi_afi_id = af.af_id_annexe_financiere +left join {{ ref('stg_salarie') }} as salarie + on ctr.contrat_id_pph = salarie.salarie_id +left join {{ source('fluxIAE', 'fluxIAE_RefNiveauFormation') }} as rnf + on ctr.contrat_niveau_de_formation_code = rnf.rnf_id +left join {{ source('fluxIAE', 'fluxIAE_Structure') }} as struct + on ctr.contrat_id_structure = struct.structure_id_siae +left join {{ ref('stg_insee_appartenance_geo_communes') }} as app_geo + on struct.structure_adresse_admin_code_insee = app_geo.code_insee +where + ctr.contrat_type_contrat = 0 + and af.af_etat_annexe_financiere_code in ( + 'VALIDE', 'PROVISOIRE', 'CLOTURE' + ) diff --git a/dbt/models/staging/properties.yml b/dbt/models/staging/properties.yml index e13d5578..2d30820a 100644 --- a/dbt/models/staging/properties.yml +++ b/dbt/models/staging/properties.yml @@ -32,11 +32,6 @@ models: Ce modèle récupère les données de la table c1 organisations et y ajoute des colonnes pour faciliter le déploiement de tableaux metabase liés aux prescripteurs. Une colonne type_complet_avec_habilitation permet notamment de rendre cohérent le nom des prescripteurs avec celui de la table candidature. Elle pourra également être enrichie d'autres données sur les organisations comme le nombre de structures partenaires, le nombre de prescriptions réalisées, etc. - tests: - - dbt_utils.expression_is_true: - # we check that those columns match as much as possible, knowing that the first one is prefixed by the department code: "01 - Ain". - expression: > - split_part("nom_département", ' - ', 2) = "nom_département_insee" - name: stg_reseaux description: > Ce modèle récupère les données des tables reseau_iae_adherents et reseau_iae_ids afin d'associer l'id reseau correspondant à chaque structure. @@ -71,7 +66,10 @@ models: Vue créée pour joindre les dates d'embauche de chaque candidat. Cette vue est utilisée dans candidats_derniere_embauche.sql pour extraire la dernière date d'embauche d'un candidat. - name: stg_salarie description: > - Vue créée pour récupérer les id uniques des salarié(e)s ainsi que leur genre afin de permettre le calcul des ETPs par genre. + Vue créée pour récupérer les id uniques des salarié(e)s ainsi que leur caractéristiques (p.exp genre), car le modele fluxIAE_Salarie contient des `salarie_id` en doublon (car un salarie peut avoir plusieurs `hash_numero_pass_IAE`). + tests: + - dbt_utils.equal_rowcount: + compare_model: source('fluxIAE', 'fluxIAE_Salarie_v2') - name: stg_sorties_finales description: > Vue créée afin de servir de base pour créer des tables prenant en compte les spécifité de sortie de chaque type de SIAE. diff --git a/dbt/models/staging/stg_salarie.sql b/dbt/models/staging/stg_salarie.sql index f483182c..1d3a13c8 100644 --- a/dbt/models/staging/stg_salarie.sql +++ b/dbt/models/staging/stg_salarie.sql @@ -1,8 +1,28 @@ -/* This table is needed to gather the gender of all the distincts employees in the asp flux -Indeed, some employees are referenced more than once which induces a wrong amount of ETP per gender */ - select distinct salarie.salarie_id, - salarie.salarie_rci_libelle + salarie.salarie_rci_libelle, + salarie.salarie_codeinseecom, + salarie.salarie_commune as commune, + ltrim(salarie.salarie_code_dpt, '0') as departement, + case + when salarie.salarie_rci_libelle = 'MME' then 'Femme' + when salarie.salarie_rci_libelle = 'M.' then 'Homme' + else 'Non renseigné' + end as genre_salarie, + case + when (date_part('year', current_date) - salarie.salarie_annee_naissance) <= 25 then 'a- Moins de 26 ans' + when (date_part('year', current_date) - salarie.salarie_annee_naissance) >= 26 and (date_part('year', current_date) - salarie.salarie_annee_naissance) <= 30 then 'b- Entre 26 ans et 30 ans' + when (date_part('year', current_date) - salarie.salarie_annee_naissance) >= 31 and (date_part('year', current_date) - salarie.salarie_annee_naissance) <= 50 then 'c- Entre 31 ans et 50 ans' + when (date_part('year', current_date) - salarie.salarie_annee_naissance) >= 51 then 'd- 51 ans et plus' + else 'autre' + end as tranche_age, + case + when salarie.salarie_adr_qpv_type = 'QP' then 'Oui' + else 'Non' + end as qpv, + case + when salarie.salarie_adr_is_zrr = 'true' then 'Oui' + else 'Non' + end as zrr from - {{ source('fluxIAE', 'fluxIAE_Salarie') }} as salarie + {{ ref('fluxIAE_Salarie_v2') }} as salarie