Réponses céées sur le Forum

Page 1 sur 7
  • ypicot

    Membre
    16 novembre 2024 à 16h01 en réponse à: Ne pas afficher les weekends et jours fériés dans mon graphique

    Bonjour

    Il y a deux aspects dans cette question :

    • comment créer une table contenant uniquement les dates ouvrées
    • comment afficher un visuel ne contenant que lesdites dates

    Pour la première partie, j’ai tendance à passer par Power Query, car cela limite (un peu) le nombre de tables inutiles dans la vue modèle de Power BI.

    Ma suggestion est donc de créer une table des dates “normale” (la dimDates habituelle) en PQY.

    Ensuite créer une requête des jours fériés, soit en récupérant une liste toute faite (par exemple sur https://calendrier.api.gouv.fr/jours-feries/) soit en la créant soit-même dans une source quelconque (Excel, Sql Server, …). Cette dernière solution permet de plus de tenir compte des spécificités l’entreprise, tels que les ponts non officiels ou la période entre Noël et jour de l’an.

    Par la suite, une fusion avec une non-correspondance (un des deux dernières options dans le type de jointure) permet de filtrer dimDates avec les dates non travaillées, et d’obtenir un dimDatesOuvrees.

    Pour la deuxième partie (création du visuel), il est tout à fait possible d’utiliser le visuel courbe habituel. Simplement, sur l’axe des X, il faut utiliser dimDatesOuvrees, en faisant attention de bien créer sa propre hiérarchie et surtout ne pas utiliser (si elle n’a pas été supprimée) la hiérarchie de dates intégrée.

    Résultat : un visuel dans lequel apparaissent ni week-end ni jours fériés (14 juillet)

  • ypicot

    Membre
    16 novembre 2024 à 13h50 en réponse à: Supprimer dernière ligne

    Bonjour

    Voici une solution pour supprimer la dernière ligne pour chaque salle.

    1. Trier la table par salle et par date
    2. Fare un regroupement par salle, avec une sortie sur deux colonnes (et deux opérations) : une sur “toutes les lignes”, et une autre sur “compter les lignes”
    3. Ajouter une colonne personnalisée qui ajoute un numéro de ligne (un index) par salle
    4. Supprimer les colonnes en trop, ici “Salle” et “Table” (pas indispensable, mais c’est plus propre)
    5. Cliquer sur la double flèche pour développer la colonne NumLigne
    6. Créer un filtre quelconque. Il s’agit juste d’avoir une base, car nous allons la modifier la formule
    7. Dans la barre de formule, modifier l’expression du filtre pour ne garder que les lignes dont l’index est différent de NbLignesParSalle. Dans la capture ci-dessous, j’ai ajouté une condition pour ne pas supprimer la salle s’il n’y a qu’une ligne

    A titre indicatif, voici le script dont je me suis servi. Il suffit de le coller dans l’éditeur avancé d’une requête vide pour voir les opérations en détail.

    let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WCk7MyUlVMFTSUTIw1c1PLlGK1UERNMMmaI5N0AJN0AgoaGiIRRDDImOQoCWaoAlIuwEWQewqoRbFAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Salle = _t, Date = _t]),
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"Salle", type text}, {"Date", type date}}),
    #"Lignes triées" = Table.Sort(#"Type modifié",{{"Salle", Order.Ascending}, {"Date", Order.Ascending}}),
    #"Lignes groupées" = Table.Group(#"Lignes triées", {"Salle"}, {{"Table", each _, type table [Salle=nullable text, Date=nullable date]}, {"NbLignesParSalle", each Table.RowCount(_), Int64.Type}}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Lignes groupées", "NumLigne", each Table.AddIndexColumn( [Table], "Index", 1 )),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Personnalisée ajoutée",{"Salle", "Table"}),
    #"NumLigne développé" = Table.ExpandTableColumn(#"Colonnes supprimées", "NumLigne", {"Salle", "Date", "Index"}, {"Salle", "Date", "Index"}),
    #"Lignes filtrées" = Table.SelectRows(#"NumLigne développé", each ([Index] <> [NbLignesParSalle] or [NbLignesParSalle] = 1))
    in
    #"Lignes filtrées"

  • ypicot

    Membre
    2 novembre 2024 à 22h34 en réponse à: Faire des totaux par ligne spécifique

    Bonjour

    Vu de ma fenêtre, je ne pense pas que PBI soit idéal pour ce genre de situation.

    La solution la plus “simple” que je vois (mais peut-être que je vais être contredit) est de créer des pseudo-codes (ex : “1-1” pour la ligne “marge semi-brute”), utiliser des formules avec des IF plus ou moins alambiquées pour soustraire les charges au CA, …

    Si c’est un tableau dont les infos codes, service et TDB1 evoluent peu (donc soit qui est fait une fois par an, soit dont le nombre de lignes ne change pas au cours du temps), je conseillerais un travail dans le PQY d’Excel pour avoir des données propres et regroupées correctement dans un onglet, puis un autre onglet “présentation” qui afficherait les valeurs, avec qques formules (ce que tu as mis en vert).

    Mais c’est peut-être ce que tu as déjà fait…

    As-tu réellement besoin d’une fonctionnalité PBI qui n’existe pas dans Excel ? Par exemple la publication ?

  • ypicot

    Membre
    2 novembre 2024 à 17h01 en réponse à: Actualisation incrémentielle

    Bonjour

    Je n’ai hélas pas de réponse à ta question, mais voici une piste qui te permettrait peut-être de la trouver toi-même :

    Rajouter dans les requêtes (donc dans PQY) une colonne qui indique la date de recalcul :

    DateTime.LocalNow()

    Toutes les valeurs étant les mêmes, l’augmentation de taille du fichier est très faible, voire négligeable.

  • ypicot

    Membre
    25 octobre 2024 à 11h29 en réponse à: Débutant : utiliser un fichier excel dans powerbi

    Bonjour

    Réponse simple (voire simpliste) : oui, c’est possible. Une fois que chaque tableau a été récupéré, tu peux les dépivoter : dans Power Query, >> Transformer >> N’importe quelle colonne >> Dépivoter les colonnes (tu as trois options possibles en ouvrant le menu à coté de l’option)

    Par la suite, tu as juste à ajouter une colonne personnalisée contenant le nom du salarié.

    En fait, la difficulté n’est pas là, mais plutôt dans la récupération des différents tableaux qui se trouvent dans Excel. Vu de ma fenêtre, il est tout à fait possible d’automatiser cette récupération en Power Query, mais cela demande une très bonne connaissance du langage M.

    Après, si c’est du one-shoot, par exemple si le traitement n’est pas à faire tous les mois, c’est gérable à la main. Chronophage (et casse-pied), mais gérable.

  • ypicot

    Membre
    24 octobre 2024 à 23h02 en réponse à: Passage du paramètre USERNAME à une procédure stockée SQL

    Bonjour

    Il peut y avoir pas mal de raisons pour ne pas passer à DirectQuery, notamment si vous utilisez la RLS (de très nombreuses fonctions ne sont pas compatibles) ou si vos serveurs sont un peu justes.

    Pour plus de détails : https://learn.microsoft.com/fr-fr/power-bi/connect-data/desktop-use-directquery

  • ypicot

    Membre
    24 octobre 2024 à 13h42 en réponse à: Question DAX

    Bonjour

    Si tu n’as pas trop de cohortes, une solution peut être d’utiliser une première mesure simple :

    SumCnt = SUM(Test[cnt])

    Puis une formule qui, pour chaque cohorte, détermine s’il y a ou non un résultat, avant de faire la synthèse.

    SumCNT_Delta1 =
    VAR __CntDelta_1a = CALCULATE( [SumCnt], Test[delta]=1 && Test[cohort]=”a” )
    VAR __CntDelta_1b = CALCULATE( [SumCnt], Test[delta]=1 && Test[cohort]=”b” )
    VAR __CntDelta_Xa = NOT(ISBLANK(CALCULATE( [SumCnt], Test[cohort]=”a” ))) + 0
    VAR __CntDelta_Xb = NOT(ISBLANK(CALCULATE( [SumCnt], Test[cohort]=”b” ))) + 0
    VAR __CntDelta_1 =
    __CntDelta_Xa * __CntDelta_1a +
    __CntDelta_Xb * __CntDelta_1b
    RETURN __CntDelta_1

    En espérant que cela réponde à ta question

  • ypicot

    Membre
    24 octobre 2024 à 12h06 en réponse à: Intégrer un paramètre dans un script Python de Power BI

    Bonjour

    A ma connaissance, pour définir la valeur d’un paramètre en M à partir d’un segment dans Power Query, il existe une solution mais uniquement quand on est en DirectQuery.

    Cette limitation est précisée dans le premier paragraphe de https://learn.microsoft.com/en-us/power-bi/connect-data/desktop-dynamic-m-query-parameters

    Une solution (imaginée mais pas testée) serait de réaliser le segment en PowerApps lui-même intégré dans le rapport PBI, qui enverrait la valeur sélectionnée dans une table quelconque, table qui serait ensuite récupérée par Power Query.

    Un peu capilotractée, mais bon…

  • ypicot

    Membre
    3 septembre 2024 à 10h39 en réponse à: Les totaux d’une table Power Bi sont incohérents

    Bonjour

    C’est une histoire de contexte de calcul.

    Quand tu fais :

    SUMX(…, Base Vente'[Délais OK])/COUNT(‘Base Vente'[Délais OK])<0.9, …)

    Le numérateur s’appliquer bien à la ligne en cours, mais le COUNT s’applique à l’ensemble des lignes du contexte.

    (pour la suite, je suis bloqué : l’image de ton msg initial n’apparait plus dans mon navigateur, donc je ne sais plus ce que tu veux obtenir 🤔 )

    Yvan

    • Cette réponse a été modifiée Il y a 2 mois, 3 semaines par  ypicot.
    • Cette réponse a été modifiée Il y a 2 mois, 3 semaines par  ypicot.
  • ypicot

    Membre
    31 août 2024 à 14h10 en réponse à: Patcher en bloc une table mySql par un fichier CSV

    Bonjour

    Une idée à chaud, sans avoir testé : créer un script PowerShell lancé par Power Automate. Ce script exécutera une ligne de commande de mysql qui importera les données (qque chose type “mysql –user=monuser –password=monpw dbname < file.sql”)

    Cela te permet d’importer au format SQL ou au format CSV (LOAD DATE INFILE, si ta config le permet).

    Inconvénient de taille : tu es obligé d’indiquer le mot de passe du compte mysql dans le script 🙁
    Même si tu créés un compte qui ne sert qu’à cela (merci le GRANT), cela fait un trou dans la sécurité.

    Yvan

    • Cette réponse a été modifiée Il y a 2 mois, 3 semaines par  ypicot.
  • ypicot

    Membre
    29 août 2024 à 16h02 en réponse à: mauvais résultat par date

    Bonjour

    Difficile de répondre sans avoir ni le modèle, ni les formules.

    En ce qui concerne la disparition de la hiérarchie quand tu rajoutes la table des dates, c’est normal. L’idée est :

    • dans la table des dates, d’ajouter les champs qui t’intéressent (année, trimestre, mois, …).
    • par la suite, d’utiliser exclusivement les données de la table des dates (on “oublie” le champ date qui se trouve dans ta table de faits)
    • de créer ladite hiérarchie à la main. Pour cela deux solutions sont possibles. La plus simple (à mon avis) consiste à glisser successivement, et dans le bon ordre, les champs idoines de la table des dates

    Petit piège classique : si tu utilises le nom des mois dans la table de dates, ceux-ci apparaitront dans l’ordre alphabétique. Il est impératif d’avoir le numéro du mois MONTH( [date] ) et dans les outils de colonne, de trier le mois texte par le mois numérique.

    Yvan

  • ypicot

    Membre
    27 août 2024 à 18h34 en réponse à: Ajout de prestataires sur une table de données

    Bonjour

    L’ajout d’une table intermédiaire qui contiendrait la date de début et la date de fin, mais également la clé primaire de la prestation et la clé primaire de la société te permet de résoudre ce problème, qui est un classique de la relation “N à N”.

    Après, si tu t’intéresses uniquement aux prestataires actuels (et que donc tu ne souhaites jamais afficher les anciens), tu peux au niveau de Power Query rajouter un filtre qui supprime les anciens. De cette manière, PowerBI ne “verra” que les nouveaux.

    Yvan

  • ypicot

    Membre
    26 août 2024 à 8h47 en réponse à: Ajout de prestataires sur une table de données

    Bonjour

    Vu de ma fenêtre, il te manque une table entre les entreprises et les contrôles prestation. Cette table pourra notamment contenir la date de début et la date de fin de la prestation, ou au pire un champ “en cours / terminé”.

    Yvan

  • ypicot

    Membre
    8 août 2024 à 23h32 en réponse à: Contexte d’évaluation DAX – calcul de taux d’occupation

    Bonjour

    Peux-tu poster les formules que tu as utilisées ? Ou, mieux, partager un pbix contenant un extrait du fichier ?

    Yvan

  • ypicot

    Membre
    8 août 2024 à 23h27 en réponse à: Evolution de deux mesures différentes selon un filtre choisit

    Bonjour

    Difficile de répondre comme cela. Pourrais-tu partager un pbix contenant un extrait du fichier ?

    Yvan

Page 1 sur 7