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

Power BI Discussion :

Uniformiser une colonne texte


Sujet :

Power BI

  1. #1
    Membre du Club
    Homme Profil pro
    Superviseur de Hotline
    Inscrit en
    Octobre 2021
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Superviseur de Hotline
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2021
    Messages : 112
    Points : 62
    Points
    62
    Par défaut Uniformiser une colonne texte
    Bonjour,
    je débute sous power BI, j'ai une colonne que je souhaite uniformiser dans le format. Cette colonne est du texte.

    Comment faire pour mettre TOUT le texte sous le meme format - > xx jours xx heures xx minutes

    Certaines de mes lignes ont des jours et heures minutes, d'autres des heures et des minutes et encore d'autre des minutes
    Nom : délai_resolution.jpg
Affichages : 5070
Taille : 12,2 Ko

    Mon objectif sera ensuite de recupérer le temps en fractionnement les colonnes pour ensuite les fusionner et avoir le résultats final 00:00:00

    Merci de votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 057
    Points : 2 522
    Points
    2 522
    Par défaut
    Bonjour

    J'ai déjà été confronté à la question et la solution par fractionnement/fusion n'est pas la plus facile à mettre en œuvre

    je vous propose de remplacer les "mots" par leur équivalent en seconde (avec un espace devant et pas de "s")
    " jour" par *86400, " heure" par *3600, "minute" par *60 et " seconde" par *1
    puis de remplacer les " " restants par des "+" et les "s" par rien

    "1 jour 13 heures 3 minutes 20 secondes" va devenir "1*86400+13*3600+3*60+20*1"

    il faut ensuite évaluer cette chaine de caractères avec Expression.Evaluate pour obtenir 133400 secondes
    et pour convertir en durée, #duration(0,0,0,133400) soit 0 jour, 0 heure, 0 minute et 133400 secondes va être converti en 1.13:03:20

    Code sous Excel, modifiez l'étape source dans Power BI

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    let
        Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
        #"Type modifié" = Table.TransformColumnTypes(Source,{{"Délai de résolution", type text}}),
        #"Valeur remplacée" = Table.ReplaceValue(#"Type modifié"," jour","*86400",Replacer.ReplaceText,{"Délai de résolution"}),
        #"Valeur remplacée1" = Table.ReplaceValue(#"Valeur remplacée"," heure","*3600",Replacer.ReplaceText,{"Délai de résolution"}),
        #"Valeur remplacée2" = Table.ReplaceValue(#"Valeur remplacée1"," minute","*60",Replacer.ReplaceText,{"Délai de résolution"}),
        #"Valeur remplacée3" = Table.ReplaceValue(#"Valeur remplacée2"," seconde","*1",Replacer.ReplaceText,{"Délai de résolution"}),
        #"Valeur remplacée4" = Table.ReplaceValue(#"Valeur remplacée3","s","",Replacer.ReplaceText,{"Délai de résolution"}),
        #"Valeur remplacée5" = Table.ReplaceValue(#"Valeur remplacée4"," ","+",Replacer.ReplaceText,{"Délai de résolution"}),
        #"Personnalisée ajoutée" = Table.AddColumn(#"Valeur remplacée5", "Durée en seconde", each Expression.Evaluate([Délai de résolution])),
        #"Personnalisée ajoutée1" = Table.AddColumn(#"Personnalisée ajoutée", "Durée", each #duration(0,0,0,[Durée en seconde]))
    in
        #"Personnalisée ajoutée1"
    Stéphane

  3. #3
    Membre du Club
    Homme Profil pro
    Superviseur de Hotline
    Inscrit en
    Octobre 2021
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Superviseur de Hotline
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2021
    Messages : 112
    Points : 62
    Points
    62
    Par défaut
    Pièce jointe 606466

    Merci pour votre réponse, mais excusez moi, puisque je débute, vous allez un peu vite.
    Donc par étape, j'ai remplacé les valeurs comme vous l'avez indiqué
    et ensuite je n'ai pas saisieNom : 3.jpg
Affichages : 124
Taille : 49,7 Ko

    PI _ contrainte: je ne peux pas modifier excel /\

  4. #4
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 057
    Points : 2 522
    Points
    2 522
    Par défaut
    Il faut mettre un "espace" devant les termes "jour", "heure", "minute" dans les étapes de remplacement
    " jour", " heure", " minute"

    sur la première ligne vous devez avoir 18*3660+13*60 et non 18+*3660+13+*60

    ensuite il faut ajouter une colonne personnalisée avec la formule : #duration(0,0,0,Expression.Evaluate([Delai resolution]))

    Stéphane

  5. #5
    Membre du Club
    Homme Profil pro
    Superviseur de Hotline
    Inscrit en
    Octobre 2021
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Superviseur de Hotline
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2021
    Messages : 112
    Points : 62
    Points
    62
    Par défaut
    Merci Stephane, c'est parfait
    Images attachées Images attachées  

  6. #6
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 057
    Points : 2 522
    Points
    2 522
    Par défaut
    Voir mon post #2

    la fonction Expression.Evaluate permet de convertir la chaine de caractères "1*3600+2*60" pour obtenir le nombre de secondes (3720 pour 1 heure et 2 minutes)
    ensuite on récupère les jours, heures, minutes avec le #duration(0,0,0,nbseconde)

    Stéphane

  7. #7
    Membre du Club
    Homme Profil pro
    Superviseur de Hotline
    Inscrit en
    Octobre 2021
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Superviseur de Hotline
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2021
    Messages : 112
    Points : 62
    Points
    62
    Par défaut
    super conseil merci Raccourcix

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création d'index sur une colonne TEXT
    Par AyManoVic dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/08/2010, 00h12
  2. Pb de cast sur une colonne text
    Par gaston2 dans le forum Développement
    Réponses: 2
    Dernier message: 23/10/2008, 21h52
  3. Réponses: 3
    Dernier message: 24/02/2006, 12h30
  4. Comment afficher une colonne text de SQL-server?
    Par oravelon dans le forum ASP
    Réponses: 2
    Dernier message: 18/08/2005, 09h11
  5. update d'une colonne texte
    Par todd dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/10/2003, 13h12

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