IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Microsoft BI Discussion :

Modélisation pour traitement des effectifs


Sujet :

Microsoft BI

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut Modélisation pour traitement des effectifs
    Bonjour,

    Je débute que Powerpivot, je recherche un tuto ou un exemple qui me permettrai de modéliser mon powerpivot afin de pouvoir traiter et analyser des effectifs. actuellement, je ne trouve que des vidéos traitant des chiffres financiers (ventes de produits,...)

    Ce que je cherche c'est le moyen de traiter des données d'effectifs, les présents début de mois, les entrées du mois, les sorties du mois et les présents en fin de mois. En sachant que voudrait aussi l'évolution des entrées et sorties ainsi que l'effectif fin de mois sur l'année.

    Je ne sais pas vraiment comment prendre le sujet et comment l'articuler surtout avec la gestion des dates.

    Je suis à la recherche de toutes sources d'informations, merci.

    Cdt,

    J.

  2. #2
    Membre confirmé Avatar de Nicolas MENDEZ
    Homme Profil pro
    Consultant - Formateur - Datanaute & Power BI addict
    Inscrit en
    Mai 2021
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant - Formateur - Datanaute & Power BI addict

    Informations forums :
    Inscription : Mai 2021
    Messages : 273
    Points : 558
    Points
    558
    Par défaut
    Hello,

    Je prends connaissance de ton post et n'ai pas trop de temps pour te répondre précisément maintenant, je le ferai ce soir.

    mais voici une piste car la résolution et toujours la même dans ce cas..

    Je vais dire quelque chose d'affreux, mais gérer des effectifs c'est gérer des entrées et des sorties comme pour :
    - Du stock
    - De l'encours
    - Des taches d'un projet
    ...

    Tu stockes et tu déstockes dans le temps

    Il faut faire un cumul des entrées et un cumul des stories, puis la différence des 2 : ce sera ton effectif réel à date !

    Voici le lien du post ou j'explique l'approche : LIEN
    Enjoy !

    May the Power BI be with you !

    ---------------------------------------------
    Rejoignez le groupe dédié à la Microsoft Power Platform pour échanger autour de Power BI, Power Apps, Power Automate et Power Virtual Agents Acces ICI

  3. #3
    Membre confirmé Avatar de Nicolas MENDEZ
    Homme Profil pro
    Consultant - Formateur - Datanaute & Power BI addict
    Inscrit en
    Mai 2021
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant - Formateur - Datanaute & Power BI addict

    Informations forums :
    Inscription : Mai 2021
    Messages : 273
    Points : 558
    Points
    558
    Par défaut
    Hello,

    Comme évoqué voici un exemple détaillé (avec formules) de suivi des effectifs

    Aperçu :
    Nom : Capture d’écran 2021-06-19 155421.png
Affichages : 204
Taille : 163,3 Ko
    Enjoy !

    May the Power BI be with you !

    ---------------------------------------------
    Rejoignez le groupe dédié à la Microsoft Power Platform pour échanger autour de Power BI, Power Apps, Power Automate et Power Virtual Agents Acces ICI

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Bonjour,

    Merci pour ces informations qui me sont très utile, ça me donne une autre vision de la méthode.

    Depuis l'ouverture de mon post, j'ai avancé sur ma problématique.

    Je n'avais pas lié ma table de data et le calendrier et don j'avais des mesures qui faisait des comparatifs de date avec le calendrier.

    Mes datas ressemble à cela

    Date de début | Date de fin | Type d'entrée | type de sortie | et toutes les datas nécessaires à faire des statistiques comme par exemple : Sexe, Organisation structurelle avec plusieurs niveaux, Age,....

    Mes datas sont chargées mensuellement avec toujours une date de début et une date de fin, car je peux avoir d'un mois sur l'autre différents changements comme par exemple un changement organisationnel et je dois l'identifier comme sortie d'une orga et comme entrée dans l'autre.

    si j'ai une organisation A B C D et qu'une personne passe de B vers A, je dois pouvoir l'identifier. Dans ma table je procède de la façon suivante :

    Je créé un Identifiant pour avoir la donnée du mois précédent, je la récupère et et je compare afin de savoir si la personne a changé d'organisation, dans ma table j'ai donc les colonnes :

    Orga niv 1 Orga niv 1 (M-1) Mut Orga niv 1

    ensuite, je comptabilise les mutations d'entrée et de sortie, je devrai avoir une table de ce type :

    Orga niv 1 mutation Entrée Mutation sortie
    A 1
    B -1

    ça je peux le faire mais je dois créer une table sans relation et utiliser la fonction DAX Treatas pour que je puisse afficher correctement le résultat, ce qui complique les mesures et aussi les performances surtout si on veut descendre à un niveau inférieur.

    Est ce que c'est la seule solution ou il existe une autre méthodo que je n'ai pas.

    Je ne sais pas si c'est très clair, si question, je répondrai.

    Par avance merci.

    Meumeu73

  5. #5
    Membre confirmé Avatar de Nicolas MENDEZ
    Homme Profil pro
    Consultant - Formateur - Datanaute & Power BI addict
    Inscrit en
    Mai 2021
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant - Formateur - Datanaute & Power BI addict

    Informations forums :
    Inscription : Mai 2021
    Messages : 273
    Points : 558
    Points
    558
    Par défaut
    Salut,

    Sous réserve d'avoir bien compris le besoin final, cela ne me parait pas trop tordu.

    Ta table de faits devrait avoir cette structure

    Nom : Capture d’écran 2021-06-29 114931.png
Affichages : 179
Taille : 7,0 Ko

    En suite il te suffit de réaliser un COUNT( des entrées ) et un COUNT( des sorties) par Orga. Et pour avoir les éléments du mois précédent
    Code Mesure DAX : Sélectionner tout - Visualiser dans une fenêtre à part
    CALCULATE( COUNT(des entrées), DATEADD( Calendrier[Date], - 1, MONTH ))
    devrait faire le job...

    Concernant les relations virtuelles avec TREATAS(), c'est vrai que la formule DAX est plus complexe, mais cette option reste la plus performante pour ce type de relation.
    Enjoy !

    May the Power BI be with you !

    ---------------------------------------------
    Rejoignez le groupe dédié à la Microsoft Power Platform pour échanger autour de Power BI, Power Apps, Power Automate et Power Virtual Agents Acces ICI

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Merci pour la réponse rapide.

    ma table de faits ressemble plus à ça :
    Nom : Capture1.JPG
Affichages : 181
Taille : 20,0 Ko

    et le résultat attendu :
    Nom : Capture2.JPG
Affichages : 183
Taille : 13,9 Ko

    Ensuite, pour récupérer les mutations du mois précédent avec la formule du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CALCULATE( COUNT(des entrées), DATEADD( Calendrier[Date], - 1, MONTH ))
    il faudrait que je taggue aussi la mutation, mais ça risque d'être en conflit avec les mutations des autres mois antérieurs ?

    je vais essayer de faire un petit test

  7. #7
    Membre confirmé Avatar de Nicolas MENDEZ
    Homme Profil pro
    Consultant - Formateur - Datanaute & Power BI addict
    Inscrit en
    Mai 2021
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant - Formateur - Datanaute & Power BI addict

    Informations forums :
    Inscription : Mai 2021
    Messages : 273
    Points : 558
    Points
    558
    Par défaut
    Normalement ca devrait fonctionner pareil,

    car tant que Emp01 est en B, il n'y a pas de date de sortie... donc compter les dates devrait marcher...

    Concernant le tag des mutations.. si tat table ne contient que des mutations ca simplifie... car rien à tagger

    Sinon tu dois identifier le type de mouvement Embauche, mutation, fin de contrat. Dans ce cas tu dois inclure le type de mvt = mutation dans le CALCULATE

    Tiens nous informés...
    Enjoy !

    May the Power BI be with you !

    ---------------------------------------------
    Rejoignez le groupe dédié à la Microsoft Power Platform pour échanger autour de Power BI, Power Apps, Power Automate et Power Virtual Agents Acces ICI

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    alors voici ce que j'ai réalisé

    j'ai créé un calendrier

    puis une table
    Nom : Capture3.JPG
Affichages : 192
Taille : 54,6 Ko

    j'ai créé les Id pour identifié les mutations (car les entrées et sorties seront identifiés)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ID = Feuil1[Employé ID]&"-"&Feuil1[Date de fin]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ID-1 = Feuil1[Employé ID]&"-"&Feuil1[date de début]-1
    les tags mutation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tag mutation = IF(LOOKUPVALUE(Feuil1[Orga],Feuil1[ID],Feuil1[ID-1])="","",if(LOOKUPVALUE(Feuil1[Orga],Feuil1[ID],Feuil1[ID-1])<>Feuil1[Orga],"Mutation",""))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tag mutation-1 = IF(LOOKUPVALUE(Feuil1[Orga],Feuil1[ID-1],Feuil1[ID])="","",if(LOOKUPVALUE(Feuil1[Orga],Feuil1[ID-1],Feuil1[ID])<>Feuil1[Orga],"Mutation",""))
    et ensuite les mesures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Count Tag Mutation = COUNTROWS(Feuil1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Effectif Début = 
    VAR MaxDate = MAX('Calendar'[Date])
    VAR MinDate = MIN('Calendar'[Date])
    RETURN
    CALCULATE([Count Tag Mutation],FILTER(Feuil1,Feuil1[date de début]<=MinDate && Feuil1[Date de fin]>=MinDate))-[Effectif Mutation out]-[Effectif Mutation In]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Effectif Fin = 
    VAR MaxDate = MAX('Calendar'[Date])
    VAR MinDate = MIN('Calendar'[Date])
    RETURN
    CALCULATE([Count Tag Mutation],FILTER(Feuil1,Feuil1[date de début]<=MaxDate && Feuil1[Date de fin]>=MaxDate)
    )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Effectif Mutation In = 
    VAR MaxDate = MAX('Calendar'[Date])
    VAR MinDate = MIN('Calendar'[Date])
    RETURN
    CALCULATE([Count Tag Mutation],FILTER(Feuil1,Feuil1[date de début]>=MinDate && Feuil1[Date de fin]<=MaxDate && Feuil1[tag mutation]="Mutation")
    )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Effectif Mutation out = 
    VAR MaxDate = MAXX('Calendar',DATEADD('Calendar'[Date],-1,MONTH))
    VAR MinDate = MINX('Calendar',DATEADD('Calendar'[Date],-1,MONTH))
    RETURN
    -CALCULATE([Count Tag Mutation],FILTER(Feuil1,Feuil1[date de début]>=MinDate && Feuil1[Date de fin]<=MaxDate && Feuil1[tag mutation-1]="Mutation")
    )
    pour avoir ce résultat :
    Nom : Capture4.JPG
Affichages : 175
Taille : 23,5 Ko

    Nicolas, est ce qu'il peut y avoir plus simple ou plus optimiser ? merci en tout cas pour ton aide

  9. #9
    Membre confirmé Avatar de Nicolas MENDEZ
    Homme Profil pro
    Consultant - Formateur - Datanaute & Power BI addict
    Inscrit en
    Mai 2021
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant - Formateur - Datanaute & Power BI addict

    Informations forums :
    Inscription : Mai 2021
    Messages : 273
    Points : 558
    Points
    558
    Par défaut
    Super, Ca a l'air de fonctionner....

    Maintenant question optimisation, je pense qu'on aller un peu plus loin en effet.

    La création des colonnes calculées et encore plus celles utilisant le lookupvalue() risquent de surcharger le modèle sur de grosses volumétries.

    Les colonnes ID et ID-1 vont être très pénalisantes en terme de poids des données dans le modèle. En effet tu génères une chaine texte de 16 lettres (16 octets / ligne / colonne ) et de surcroit que des valeurs uniques sur lesquelles tu réalises un lookupvalue().

    Le stockage de valeurs uniques est pas du tout optimisé et comparer des valeurs textes dans le lookupvalue est très gourmand en terme de ressources...

    L'idéal est de tout passer en mesure. A toi de voir si niveau perf ca passe comme ca, le jour ou ca coince, il sera temps de tout passer en mesure sans les colonnes calculées.
    Enjoy !

    May the Power BI be with you !

    ---------------------------------------------
    Rejoignez le groupe dédié à la Microsoft Power Platform pour échanger autour de Power BI, Power Apps, Power Automate et Power Virtual Agents Acces ICI

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Merci, je regarde pour passer en mesure

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Bonjour,

    Il faut que je créé des variables pour :

    mes ID
    mes tag mutation

    pour ensuite les intégrer dans mes mesures, c'est bien cela ?

    j'ai essaie, mais je n'arrive pas à récupérer mes colonnes dans les variables.

    Auriez vous une piste pour que je puisse avancer, merci.

  12. #12
    Membre confirmé Avatar de Nicolas MENDEZ
    Homme Profil pro
    Consultant - Formateur - Datanaute & Power BI addict
    Inscrit en
    Mai 2021
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant - Formateur - Datanaute & Power BI addict

    Informations forums :
    Inscription : Mai 2021
    Messages : 273
    Points : 558
    Points
    558
    Par défaut
    Je pense qu'il suffit de compter les dates d'entree et les date de sortie pour les mutations. Pas besoin de variables...

    Si possible passes nous un exemple anonymisé de ta source... ce sera plus facile
    Enjoy !

    May the Power BI be with you !

    ---------------------------------------------
    Rejoignez le groupe dédié à la Microsoft Power Platform pour échanger autour de Power BI, Power Apps, Power Automate et Power Virtual Agents Acces ICI

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Bonjour,

    Voici la source que j'utilise pour tester la solution.

    Elle est telle quelle j'avais décrit dans le post du 29/06/2021, 14h10.

    Ce que je cherche à faire c'est d'optimiser dès à présent car au final, la base sera assez conséquente et donc de passer les colonne calculées en mesure, j'ai commencé à regarder, mais je sèche.

    par avance merci.
    Fichiers attachés Fichiers attachés

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Points : 120
    Points
    120
    Par défaut
    Bonjour Nicolas,

    Je n'ai toujours pas avancer, je sèche complètement, est ce que vous auriez une piste ?

    par avance merci.

    Cdt,

Discussions similaires

  1. [MLD] Problème de modélisation pour gérer des élèves
    Par obiseb dans le forum Schéma
    Réponses: 8
    Dernier message: 29/09/2015, 17h48
  2. script pour traitement des données (séismes)
    Par slim251 dans le forum Tkinter
    Réponses: 5
    Dernier message: 25/09/2011, 14h08
  3. Limiter les accès disques pour traitement des données.
    Par harry le ravi dans le forum Windows
    Réponses: 1
    Dernier message: 18/11/2009, 00h11
  4. Fonction récursive pour traitement des fichiers
    Par Montor dans le forum Contribuez
    Réponses: 6
    Dernier message: 29/09/2008, 07h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo