Question
Somme et regroupement de donnée dans un CSV
- Ruff
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 8 ans 1 mois #24955
par Ruff
Somme et regroupement de donnée dans un CSV a été créé par Ruff
Bonjour,
Novice, je mets en place un système de facturation des impressions par service, je passe par PS, j'y suis presque au but final mais là j'arrive à court d'idée, je bloque :\
Est-ce que quelqu'un aurait un idée pleease
?
Je souhaite que le résultat final me donne le nombre d'impression couleur par service et le nombre d'impression NB par service...
Le plus simple est de voir en image :
## Voici ce que contient le CSV d'Origine :
\"User\";\"Company\";\"Type d'impression\";\"Compteur\"
\"tutu.toto\";\"Comptabilite\";\"Couleur\";\"1\"
\"albert.dupontel\";\"Informatique\";\"Couleur\";\"4\"
\"albert.dupontel\";\"Informatique\";\"Couleur\";\"1\"
\"alain.delon\";\"Informatique\";\"Couleur\";\"1\"
\"toto.tutu\";\"Comptabilite\";\"Couleur\";\"1\"
\"albert.dupontel\";\"Informatique\";\"N&B\";\"4\"
## Ce qui est souhaité pour le fichier final :
\"Service\";Type d'impression\";\"Compteur\"
Informatique;Couleur;6
Informatique;N&B;4
Comptabilite;Couleur;2
Comptabilite;N&B;0
Merci bien
Xnyp
Novice, je mets en place un système de facturation des impressions par service, je passe par PS, j'y suis presque au but final mais là j'arrive à court d'idée, je bloque :\
Est-ce que quelqu'un aurait un idée pleease
Je souhaite que le résultat final me donne le nombre d'impression couleur par service et le nombre d'impression NB par service...
Le plus simple est de voir en image :
## Voici ce que contient le CSV d'Origine :
\"User\";\"Company\";\"Type d'impression\";\"Compteur\"
\"tutu.toto\";\"Comptabilite\";\"Couleur\";\"1\"
\"albert.dupontel\";\"Informatique\";\"Couleur\";\"4\"
\"albert.dupontel\";\"Informatique\";\"Couleur\";\"1\"
\"alain.delon\";\"Informatique\";\"Couleur\";\"1\"
\"toto.tutu\";\"Comptabilite\";\"Couleur\";\"1\"
\"albert.dupontel\";\"Informatique\";\"N&B\";\"4\"
## Ce qui est souhaité pour le fichier final :
\"Service\";Type d'impression\";\"Compteur\"
Informatique;Couleur;6
Informatique;N&B;4
Comptabilite;Couleur;2
Comptabilite;N&B;0
Merci bien
Xnyp
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 1 mois #24959
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Somme et regroupement de donnée dans un CSV
Salut,
une piste :
[code:1]
@'
\"User\";\"Company\";\"Type d'impression\";\"Compteur\"
\"tutu.toto\";\"Comptabilite\";\"Couleur\";\"1\"
\"albert.dupontel\";\"Informatique\";\"Couleur\";\"4\"
\"albert.dupontel\";\"Informatique\";\"Couleur\";\"1\"
\"alain.delon\";\"Informatique\";\"Couleur\";\"1\"
\"toto.tutu\";\"Comptabilite\";\"Couleur\";\"1\"
\"albert.dupontel\";\"Informatique\";\"N&B\";\"4\"
'@ > c:\temp\data.csv
$datas=import-csv c:\temp\data.csv -Delimiter ';'
$result=$datas|group company,\"Type d'impression\"
$result
#
# Count Name Group
#
----
# 2 Comptabilite, Couleur {@{User=tutu.toto; Company=Comptabilite; Type d'impression=Couleur; Compt
# 3 Informatique, Couleur {@{User=albert.dupontel; Company=Informatique; Type d'impression=Couleur;
# 1 Informatique, N&B {@{User=albert.dupontel; Company=Informatique; Type d'impression=N&B; Com
$result[0].Group
# User Company Type d'impression Compteur
# ----
# tutu.toto Comptabilite Couleur 1
# toto.tutu Comptabilite Couleur 1
[/code:1]
Reste à faire la somme pour chaque groupe
une piste :
[code:1]
@'
\"User\";\"Company\";\"Type d'impression\";\"Compteur\"
\"tutu.toto\";\"Comptabilite\";\"Couleur\";\"1\"
\"albert.dupontel\";\"Informatique\";\"Couleur\";\"4\"
\"albert.dupontel\";\"Informatique\";\"Couleur\";\"1\"
\"alain.delon\";\"Informatique\";\"Couleur\";\"1\"
\"toto.tutu\";\"Comptabilite\";\"Couleur\";\"1\"
\"albert.dupontel\";\"Informatique\";\"N&B\";\"4\"
'@ > c:\temp\data.csv
$datas=import-csv c:\temp\data.csv -Delimiter ';'
$result=$datas|group company,\"Type d'impression\"
$result
#
# Count Name Group
#
----
# 2 Comptabilite, Couleur {@{User=tutu.toto; Company=Comptabilite; Type d'impression=Couleur; Compt
# 3 Informatique, Couleur {@{User=albert.dupontel; Company=Informatique; Type d'impression=Couleur;
# 1 Informatique, N&B {@{User=albert.dupontel; Company=Informatique; Type d'impression=N&B; Com
$result[0].Group
# User Company Type d'impression Compteur
# ----
# tutu.toto Comptabilite Couleur 1
# toto.tutu Comptabilite Couleur 1
[/code:1]
Reste à faire la somme pour chaque groupe
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 1 mois #24960
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Somme et regroupement de donnée dans un CSV
En passant, je me suis demandé comment faire la somme de manière concise, une solution basée sur Linq :
[code:1]
[Linq.Enumerable]::«»Sum([int[]]($result[1].Group.Compteur))
[/code:1]
Du coup comment faciliter l'écriture du rapport :
[code:1]
$result=$datas|
group-object Company,\"Type d'impression\"|
Foreach {
$_
Add-Member -inputobject $_.Group -MemberType ScriptMethod -Name SommeCompteur -Value {[Linq.Enumerable]::«»Sum([int[]]($this.Compteur))} -Force
}
# usage
$result[1].Group.SommeCompteur()
#6
[/code:1]
Mais l'objectif étant de construire un rapport basé sur des regroupements, on crée plutot un objet pour chaque regroupement
[code:1]
$Result=$datas|
group-object company,\"Type d'impression\"|
Add-Member -MemberType ScriptMethod -Name ToRapportImpressionsParService -Value {
$service,$TypeImpression= ($This.Name -split ',').Trim()
[pscustomobject]@{
PSTypeName='RapportImpressionsParService'
Service=$Service
\"Type d'impression\"=$TypeImpression
\"Compteur\"=[Linq.Enumerable]::«»Sum([int[]]($this.Group.Compteur))
}
} -Force -PassThru
$Result.ToRapportImpressionsParService()
#
# Service Type d'impression Compteur
#
# Comptabilite Couleur 2
# Informatique Couleur 6
# Informatique N&B 4
#todo ajouter la ligne : \"User.un\";\"Comptabilite\";\"N&B\";\"1\"
[/code:1]
[code:1]
[Linq.Enumerable]::«»Sum([int[]]($result[1].Group.Compteur))
[/code:1]
Du coup comment faciliter l'écriture du rapport :
[code:1]
$result=$datas|
group-object Company,\"Type d'impression\"|
Foreach {
$_
Add-Member -inputobject $_.Group -MemberType ScriptMethod -Name SommeCompteur -Value {[Linq.Enumerable]::«»Sum([int[]]($this.Compteur))} -Force
}
# usage
$result[1].Group.SommeCompteur()
#6
[/code:1]
Mais l'objectif étant de construire un rapport basé sur des regroupements, on crée plutot un objet pour chaque regroupement
[code:1]
$Result=$datas|
group-object company,\"Type d'impression\"|
Add-Member -MemberType ScriptMethod -Name ToRapportImpressionsParService -Value {
$service,$TypeImpression= ($This.Name -split ',').Trim()
[pscustomobject]@{
PSTypeName='RapportImpressionsParService'
Service=$Service
\"Type d'impression\"=$TypeImpression
\"Compteur\"=[Linq.Enumerable]::«»Sum([int[]]($this.Group.Compteur))
}
} -Force -PassThru
$Result.ToRapportImpressionsParService()
#
# Service Type d'impression Compteur
#
# Comptabilite Couleur 2
# Informatique Couleur 6
# Informatique N&B 4
#todo ajouter la ligne : \"User.un\";\"Comptabilite\";\"N&B\";\"1\"
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Ruff
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 8 ans 3 semaines #25047
par Ruff
Réponse de Ruff sur le sujet Re:Somme et regroupement de donnée dans un CSV
Hello!
Désolé j'étais parti en vacances
Merci Laurent pour ton aide, c'est nickel cela fonctionne!!!
A +
Désolé j'étais parti en vacances
Merci Laurent pour ton aide, c'est nickel cela fonctionne!!!
A +
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.043 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Somme et regroupement de donnée dans un CSV