Toutes mes réponses sur les forums
-
AuteurMessages
-
Daniel
ParticipantBonjour Magali, le Forum,
Est-ce que tu veux dire qu’après avoir cliquer sur un segment géographique, cela met longtemps voir très longtemps pour afficher les données ou est-ce au contraire très rapide et n’affiche rien ?
Les segments géographiques de la page proviennent-ils de cette table ou d’autres tables ?
J’ai déjà eu des tables avec plus d’un million de lignes sur plus de colonnes que toi et les données étaient toujours présentes dans les matrices utilisées sous Power BI.
Cordialement
DanielDaniel
ParticipantBonjour k.musseleck, le Forum,
En première approche, j’utiliserais le tri des données comme suit :
1 – Sélectionner la colonne Prod order no et trier en ordre croissant
2 – Sélectionner la colonne Line type et trier en ordre décroissant (cela placera Ecriture Production en 1er et Ecriture capacité à la suite)
Ensuite, on va dans l’onglet Transformer, on sélectionne la colonne NomClient et avec l’option Remplir vers le bas, cela devrait faire le job.
Cordialement
DanielDaniel
ParticipantBonjour pierro1234, le Forum,
A essayé, l’axe des X change et la valeur des Y aussi mais je trouve perturbant d’avoir afficher le mois de février avec les données de janvier. Peut-être ai-je mal compris ce que tu voulais représenter. Merci à Curbal pour cette astuce (http://www.curbal.com). J’étais parti dans cette direction (création d’une table déconnectée sans aboutir à un résultat probant).
1 – Changement de la mesure QTTEVENDUE comme suit : QTTEVENDUE = IF(SELECTEDVALUE(‘Périodes'[Périodes]) = “Current”, SUM(TableProduit[QUANTITE]),calculate( SUM(TableProduit[QUANTITE]),PREVIOUSMONTH(‘1Datum'[Date])))2 – Modifier le choix mesure en incluant 4 nouveaux items (pour le previous month, sachant que l’on en a déjà 4 pour le current).
3 – Création d’une table déconnectée, menu Accueil, Entrer les données, on y entre le nom de la colonne et ses valeurs (Current et Previous month), puis une colonne ID avec les numéros de la table “choix mesure” (0 à 7 dans ce cas)
4 – Création d’une liaison entre la table “choix mesure” (3ème colonne) et la table déconnectée
colonne ID
Cordialement
DanielAttachments:
You must be logged in to view attached files.1 octobre 2022 à 16 h 35 min en réponse à : Remplacement des valeurs d’une colonne (nombre important) #108187Daniel
ParticipantBonjour Magali, Le Forum,
Autre possibilité, mais pas tester sur grande quantité de données (juste le jeu fourni), donc à tester en grandeur nature.
Cela permet de ne pas passer par une colonne intermédiaire puis de la supprimer.
Désolé du temps de réponse, mais j’ai un peu galéré.
Cordialement
DanielAttachments:
You must be logged in to view attached files.30 septembre 2022 à 12 h 18 min en réponse à : Remplacement des valeurs d’une colonne (nombre important) #108164Daniel
ParticipantBonjour Magali, Le Forum,
Je ne suis pas arrivé à faire la modification dans la colonne d’origine, mais en supprimant la colonne d’origine et renommer la nouvelle colonne avec le nom de la colonne d’origine, cela fonctionne aussi, c’est bien sur quelques étapes supplémentaires mais à mon avis le temps d’exécution ne sera pas impacté.
Je regarde ce soir si une autre possibilité est faisable.
Cordialement
Daniel29 septembre 2022 à 13 h 48 min en réponse à : Remplacement des valeurs d’une colonne (nombre important) #108140Daniel
ParticipantBonjour Magali, Laurent, Le Forum,
Autre possibilité en utilisant la fonction List.Accumulate
J’ai ajouté à la fin du fichier d’origine deux villes sans erreurs et je retrouve leurs noms corrects, ça permet de corriger sur une liste de villes contenant des erreurs ou non.
Cordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour pierrot1234, Le Forum,
Pour obtenir les données du mois précédent, j’aurais utilisé la fonction PREVIOUSMONTH comme suit :QTTEVENDUE_PM = CALCULATE(SUM(TableProduit[QUANTITE]),PREVIOUSMONTH(‘1Datum'[Date]))
D’autres fonctions de Time Intelligence comme SAMEPERIODLASTYEAR, PREVIOUSYEAR, TOTALMTD existent pour répondre à d’autres besoins.
Un outil externe existe pour créer des calculation group afin de limiter le nombre de mesures à créer sous Power BI (https://kpi-consulting.fr/optimiser-le-nombre-de-mesures-grace-aux-calculation-group/).
Ci-joint un exemple de calculation group
Cordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour Pierrot1234, Eric, Le Forum,
Je pense qu’en utilisant la nouvelle fonctionnalité Fields Parameter, pour ce faire aller dans Modélisation, puis Nouveau paramètre, Champs.
1 – donner un nom au paramètre
2 – Choisir les champs/mesures que l’on veut mettre dans le slicer qui va être créer.
3 – Aller dans le visuel, et dans ton cas, choisir le nom précédemment crée et le faire glisser dans l’axe des Y.
4 – il suffit maintenant de choisir la mesure dans le slicer pour l’afficher dans le visuel.
Cela équivaut à la solution proposée par Eric, mais cela peut aussi être utilisé pour affichier des champs différents dans un visuel (exemple : Produit, catégories, customers, régions pour afficher les quantités vendues)
Cordialement
DanielAttachments:
You must be logged in to view attached files.21 septembre 2022 à 15 h 49 min en réponse à : charger des donné pwq en fonction d’un Critère #107941Daniel
ParticipantBonjour Deltacta, Le Forum,
Autre possibilité (si faisable avec données d’origine), regrouper toutes les requêtes journalières en une seule avec une colonne contenant la journée (LUNDI, MARDI,etc…), pré-requis les entêtes doivent être identiques (TOURNEE FRAIS et TOURNEE F) ne seront pas mis à la suite mais sur des colonnes différentes. Chaque requête devra avoir le nom du jour dans une colonne.
Ensuite créer une nouvelle requête en prenant comme source la liste déroulante des jours de tournée, une fois chargée faire un clic droit et Drill Down, tu devrais avoir le nom du jour avec le symbole ABC sur la gauche. Donner un nom à cette requête (exemple : ChoixDuJour)
Retour sur la requête contenant toutes les données et filtrer sur la colonne contenant les différents jours, choisir n’importe quel jour, ensuite modifier le jour (exemple : “MARDI” par ChoixDuJour) dans la barre de formule.
L’utilisateur peut changer le jour dans la liste déroulante et en actualisant la requête les données apparaîtront.
Cordialement
DanielDaniel
ParticipantBonjour keveen, Eric, Le Forum,
Content de voir que cela fonctionne, merci pour le retour.
Afin de te permettre de comprendre la formule utilisée, j’ai joint quelques explications dans le document ci-joint
Cordialement
DanielAttachments:
You must be logged in to view attached files.19 septembre 2022 à 12 h 44 min en réponse à : charger des donné pwq en fonction d’un Critère #107297Daniel
ParticipantBonjour Deltacta, Le Forum,
Et sans macro, si cela peut t’intéresser, en utilisant les fonctions Excel Index et Indirect (voir pièce jointe).
Exemple :
=SIERREUR(INDEX(INDIRECT(SUBSTITUE($B$1;”&”;”_”));LIGNE()-LIGNE(B$3);EQUIV(B$3;LUNDI[#En-têtes];0));””)Cordialement
DanielAttachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour keveen, Le Forum,
Peux-tu me dire à quoi sert la dernière étape #”Montant en USD” = AjoutColMontantUSD{0}[Net Sales USD], en faisant le test avant de poster ma 1ère réponse cela n’en faisait pas partie et j’obtenais le montant converti dans la devise USD ?
S’il t’était possible de fournir un exemple de données anonymisées de tes deux tables, je pourrais regarder, car comme cela je ne vois pas d’où cela vient.
En pièce jointe, mon essai par rapport à ta description initiale.Attachments:
You must be logged in to view attached files.Daniel
ParticipantBonjour keeveen, Le Forum,
Plusieurs étapes seront nécessaires.
1 – Chargement de la 1ère table (Invoiced Sales)
2 – Chargement de la seconde table (Rate fx)
3 – Ajout d’une colonne personnalisée (Montant en USD), elle correspond à l’étape ‘AjoutColMontantUSD’ de la requête ci-dessous, pour chaque ligne de ta table Invoiced Sales, on va regarder quelles lignes de la table Rate fx correspondent à l’année et à la devise et on va récupérer le taux de change qui sera multiplié par le montant commande
Quelques explications :
Table.SelectRows(tabExchangeRate,
(varCalc) => varCalc[Devise code]=[Devise code]
and varCalc[Année]=Date.Year([Date de commande] )) permet de sélectionner les lignes de la table “Rate Fx” que j’ai appelé tabExchangeRate si on lui ajoute [Taux de change] on récupère une liste d’une ligne correspondant au taux de change de la devise et de l’année de la table “Invoiced Sales”, et en lui ajoutant {0} on récupère le taux de change, il suffit de multiplier le montant de commande par ce taux pour obtenir le montant en USDDébut de la requête
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
ModificationType = Table.TransformColumnTypes(Source,{{“Montant commande”, type number}, {“Date de commande”, type date}}),
AjoutColMontantUSD = Table.AddColumn(ModificationType, “Montant en USD”, each [Montant commande] * Table.SelectRows(tabExchangeRate,
(varCalc) => varCalc[Devise code]=[Devise code]
and varCalc[Année]=Date.Year([Date de commande] ))[Taux de change]{0}, type number)
in
AjoutColMontantUSD
Fin de la requêteEn espérant avoir pu t’aider à résoudre ton problème
Cordialement
Daniel12 septembre 2022 à 9 h 10 min en réponse à : Colonne calculée avec des valeurs type date de deux tables différentes #107112Daniel
ParticipantBonjour konanothnielr, Manon, Le Forum,
Et en essayant ce qui suit, cela devrait faire le job en ayant préalablement établi les relations entre les tables.
Nb_Jours = datediff(SELECTEDVALUE(‘Création'[Date_création]),SELECTEDVALUE(Reception[date_reception]),day)
On met la date de reception et la date de création dans un visuel ‘Table’ et on ajoute la mesure ci-dessus, cela affichera le nombre de jours compris entre ces deux dates.
Cordialement
Daniel
Cependant, je souscris pleinement à la remarque de Manon, une table de dates (calendrier) est effectivement utile pour toutes les fonctions de TimeIntelligence que l’on souhaiterais utiliser.Daniel
ParticipantBonjour CopyCat, Le Forum,
En espérant avoir bien compris, dans l’exemple j’ai deux colonnes une pour les dates et l’autre pour les heures, que je rassemble après (une colonne en entrée devrait suffire).
– Création d’une colonne Année
– Grouper sur cette colonne en sélectionnant Toutes les lignes
– Heure d’été : dernier dimanche du mois de Mars, je suis parti du 01/03/ année de la ligne de donnée, puis je prends le dernier jour du mois de cette date et calcul du dernier dimanche (7-6+jour de la semaine du dernier jour du mois). A cette date, je rajoute le temps soit 2 heures du matin.
– Heure hiver : même principe que pour Heure été mais en partant du 01/10
Cette partie peut être simplifiée en partant directement du dernier jour du mois de Mars et d’OctobreDébut Requête
let
Source = Excel.CurrentWorkbook(){[Name=”Tableau2″]}[Content],
ModificationTypeDonnées = Table.TransformColumnTypes(Source,{{“Date de relevé”, type date}, {“Heure UTC (0)”, type time}}),
DateHeureReleve = Table.AddColumn(ModificationTypeDonnées, “DateHeureRelevé”, each #datetime(Date.Year([Date de relevé]),Date.Month([Date de relevé]),Date.Day([Date de relevé]),Time.Hour([#”Heure UTC (0)”]),Time.Minute([#”Heure UTC (0)”]),Time.Second([#”Heure UTC (0)”]))),
AjoutColonneAnnee = Table.AddColumn(DateHeureReleve, “Année”, each Date.Year([Date de relevé]), Int64.Type),
GroupByAnnee = Table.Group(AjoutColonneAnnee , {“Année”}, {{“AnnéeCalendaire”, each _, type table [Date de relevé=nullable date, #”Heure UTC (0)”=nullable time, Année=number]}}),
DateDébutEte = Table.AddColumn(GroupByAnnee, “DébutEté”, each Table.AddColumn([AnnéeCalendaire],”DateDébutEté”,each Date.AddDays(Date.EndOfMonth(Date.FromText(“01/03/”&Text.From([Année]))), -(7-6+Date.DayOfWeek(Date.EndOfMonth(Date.FromText(“01/03/”&Text.From([Année])))))))),
DateFinEte = Table.AddColumn(DateDébutEte, “FinEté”, each Table.AddColumn([DébutEté],”DateFinEté”,each Date.AddDays(Date.EndOfMonth(Date.FromText(“01/10/”&Text.From([Année]))), -(7-6+Date.DayOfWeek(Date.EndOfMonth(Date.FromText(“01/10/”&Text.From([Année])))))),type date)),
DateTimeDebutEte= Table.AddColumn(DateFinEte, “DateHeureEté”, each Table.AddColumn([FinEté], “DateHeureDebutEte”, each #datetime(Date.Year([DateDébutEté]),Date.Month([DateDébutEté]),Date.Day([DateDébutEté]),Time.Hour(Time.FromText(“02:00:00am”)),Time.Minute(Time.FromText(“02:00:00am”)),Time.Second(Time.FromText(“02:00:00am”))), type datetime)),
DateTimeFinEte = Table.AddColumn(DateTimeDebutEte, “DateHeureFinEté”, each Table.AddColumn([DateHeureEté], “DateHeureFinEte”, each #datetime(Date.Year([DateFinEté]),Date.Month([DateFinEté]),Date.Day([DateFinEté]),Time.Hour(Time.FromText(“03:00:00am”)),Time.Minute(Time.FromText(“03:00:00am”)),Time.Second(Time.FromText(“03:00:00am”))), type datetime)),
SuppressionColonnes = Table.SelectColumns(DateTimeFinEte,{“DateHeureFinEté”}),
DevelopperTableData = Table.ExpandTableColumn(SuppressionColonnes, “DateHeureFinEté”, {“DateHeureRelevé”, “DateHeureDebutEte”, “DateHeureFinEte”}, {“DateHeureRelevé”, “DateHeureDebutEte”, “DateHeureFinEte”}),
CalculHeuresUTC = Table.AddColumn(DevelopperTableData, “DateHeureRelevé UTC”, each if [DateHeureRelevé] >= [DateHeureDebutEte] and [DateHeureRelevé] <= [DateHeureFinEte] then [DateHeureRelevé]+#duration(0,2,0,0) else [DateHeureRelevé] + #duration(0,1,0,0)),
SuppressionAutresColonnes = Table.SelectColumns(CalculHeuresUTC,{“DateHeureRelevé UTC”, “DateHeureRelevé”}),
PermutationColonnes = Table.ReorderColumns(SuppressionAutresColonnes,{“DateHeureRelevé”, “DateHeureRelevé UTC”})
/*
Fin du mois Mars = Date.EndOfMonth(Date.FromText(“01/03/”&Text.From([Année])))
Jour de fin du mois Mars = Date.DayOfWeek(Date.EndOfMonth(Date.FromText(“01/03/”&Text.From([Année]))))
Calcul du dernier Dimanche = Date.AddDays(Date.EndOfMonth(Date.FromText(“01/03/”&Text.From([Année]))), -(7-6+Date.DayOfWeek(Date.EndOfMonth(Date.FromText(“01/03/”&Text.From([Année]))))))
7 : pour 7 jours dans la semaine
6 : chiffre correspond à dimanche
Date.DayOfWeek(Date.EndOfMonth(Date.FromText(“01/03/”&Text.From([Année])))) : Jour de la semaine du dernier jour du mois
HeureChgHeureEte = Time.FromText(“02:00:00am”)
DateTimeDebutEte= Table.AddColumn(DateDébutEté, “Début Date été”, each #datetime(Date.Year([DateDébutEté]),Date.Month([DateDébutEté]),Date.Day([DateDébutEté]),Time.Hour(Time.FromText(“02:00:00am”)),Time.Minute(Time.FromText(“02:00:00am”)),Time.Second(Time.FromText(“02:00:00am”))), type datetime)
*/
in
PermutationColonnesFin Requête
Cela te donnera au moins des pistes à étudier, cela reste à tester sur un grand nombre de lignes afin de voir la performance et de l’améliorer au besoin.
Cordialement
DanielAttachments:
You must be logged in to view attached files. -
AuteurMessages