Toutes mes réponses sur les forums
-
AuteurMessages
-
29 janvier 2021 à 12 h 43 min en réponse à : Tri d’un tableau à l’aide de plusieurs variables #86613
Stéphane Lorin
ParticipantDe rien !
et merci de votre retour positif
Bonne fin de journée également
Stéphane29 janvier 2021 à 11 h 57 min en réponse à : Tri d’un tableau à l’aide de plusieurs variables #86608Stéphane Lorin
ParticipantAutre approche avec une seule requête :
– Vous importez votre csv
– Vous pivotez suivant le nom de l’antivirus en choisissant la colonne de valeur “Etat de protection” et dans les options avancées “ne pas agréger” (possibilité souvent méconnue et pourtant très pratique)
– Vous ajoutez une colonne conditionnelle du style
if [Antivirus1]=”Enabled” then “Antivirus1″
else if [Antivirus2]=”Enabled” then “Antivirus2”
else “Pas d’antivirus”Stéphane
29 janvier 2021 à 10 h 43 min en réponse à : Tri d’un tableau à l’aide de plusieurs variables #86606Stéphane Lorin
ParticipantBonjour
Pas testé mais voici comment je procèderai dans PowerQuery– Requete1 : j’importe le csv
– Requete2 : je fais référence à la Requete1, je filtre uniquement les lignes “Enabled”
Comme vous avez précisé qu’un seul Antivirus ne pouvait être actif à la fois, pas de problème de doublon.– Requete3 : je fais de nouveau référence à la Requete1, je ne prends que la 1ere colonne (nom du PC) et je supprime les doublons. Puis je fusionne avec la Requête2 et je récupère le nom de l’antivirus. Les PC qui renvoient “null” n’ont pas d’antivirus actif
Ensuite il ne devrait pas y avoir de soucis pour votre camenbert
Stéphane
Stéphane Lorin
ParticipantBonsoir
sans fichier, difficile de vous dire.
Regarder à la 5ème ligne, s’il n’y a pas un ” qui traîne.L’éditeur Excel des tables inversées DAX n’est pas du tout convivial. C’est le moins que l’on puisse dire !
Je le connais, il peut être très pratique, je vous l’ai proposé car il répond à votre demande mais personnellement je ne l’utilise pas. Je préfère passer par PowerQuery pour ce genre de manip et ajouter la table obtenue au modèle de données.
Stéphane
Stéphane Lorin
ParticipantMerci pour votre retour
Je ne sais pas quel est l’objectif final mais un TCD classique avec un filtre “10 premiers” en choisissant les 5 plus hautes valeurs, un tri décroissant sur le retard et avec un segment par année vous donne le résultat attendu.
A moins que votre projet soit bien plus complexe que ça, le DAX avec le TOPN n’est pas nécessaire ici.
StéphaneAttachments:
You must be logged in to view attached files.Stéphane Lorin
ParticipantBonjour
je ne veux pas vous démotiver mais je ne débute pas en DAX et je coince encore très souvent.
la fonction TOPN renvoie une table et vous voulez dans une mesure. D’où l’erreur
si vous êtes dans Excel il vous faut une table inversée (voir une de mes dernière intervention) et un EVALUATE devant.
Stéphane
Stéphane Lorin
ParticipantBonjour
Vu que vos données sont de totaux cumulés par semaine il vous faut faire la différence d’une semaine sur l’autre.
Avec Power Query je vois deux possibilités assez aisées à mettre en oeuvre :
– soit par fusion
– soit par ajout1ere étape commune, vous ajoutez toutes vos données (fichiers hebdo dans un dossier)
Ensuite
– par fusion : vous ajoutez une colonne calculée avec la semaine précédente (ou une date -7), puis vous fusionnez votre table avec elle-même avec d’un coté Magasin|Date-7 et de l’autre Magasin|Date. Vous développez, vous soustrayez les montants pour avoir la valeur de la semaine– par ajout : vous faites référence à votre première étape, vous supprimez les données de la dernière semaine (important pour la suite), vous transformez le champ date en ajoutant 7 et le champ CA en le multipliant par -1. Vous ajoutez (Table.Combine) cette nouvelle table à la table initiale. Il ne reste plus qu’à regrouper par magasin et par date en faisant la somme du CA.
Sans exemple de votre part, je peux difficilement être plus précis.
Cordialement
StéphaneStéphane Lorin
ParticipantDans ce cas il faut créer une table inversée et utilisé la fonction SUMMARIZE
Données/Connexions existantes/Table/ Tableau1 et choisir l’affichage tableau
Puis Clic Droit/Table/Modifier DAX pour mettre le codeEVALUATE(
SUMMARIZE(
Tableau1,
Tableau1[Contrat],
“Min”,
MIN(Tableau1[Date de facture])
)
)Et ensuite mettre cette table dans le modèle de données
Voir la pièce jointe
Stéphane
Attachments:
You must be logged in to view attached files.Stéphane Lorin
ParticipantBonjour
Après avoir ajouté un champ “N° Semaine -1” dans votre requête vous pouvez fusionner votre table avec elle pour récupérer la valeur de la semaine précédente puis faire la différence.
Stéphane
Stéphane Lorin
ParticipantQue cherchez vous à faire exactement ?
En construisant un tableau croisé dynamique à partir du modèle de données, vous mettez en ligne les contrats et votre mesure en valeur et vous obtenez la date min de chaque contrat.
StéphaneStéphane Lorin
ParticipantBonjour
Votre question n’est pas très claire.Dans le visuel “table”, c’est vous qui choisissez l’ordre des colonnes que vous affichez.
Sinon si vous souhaitez modifier l’ordre des colonnes d’une table vous pouvez le faire avec Power Query via “modifier les requêtes”
StéphaneStéphane Lorin
ParticipantBonjour
Vous indiquez “Power Pivot” mais il n’y a pas le moindre modèle de données dans votre fichier, ni même le moindre tableau !
alors avec une fonction Excel classique, vous pouvez utiliser MIN.SI.ENS
sinon avec un mesure DAX du style : CALCULATE(MIN([Date de facture]);FILTER(Votre_Tableau;[Contrat]=[Contrat]))
vous filtrez votre tableau sur le champ [contrat] pour chaque valeur de [contrat] et vous afficher la valeur minimal dans votre restitution
Si vous tenez à votre colonne calculée dans PowerPivot il faudra sûrement ajouter un ALLEXCEPT dans le FILTERAvec un tableau croisé classique, vous pouvez aussi afficher le champ [Date de Facture] et le synthétiser par “Min”
Stéphane
Stéphane Lorin
ParticipantBonjour
Bien sûr ! et même heureusement pour nous !
Si vous parcourez un peu le site de Sophie vous verrez que Power Query est extrêmement puissant et que travailler avec 2 tables est la base pour ensuite les combiner ou les fusionner.
StéphaneStéphane Lorin
ParticipantBonjour
Avez-vous essayé de regrouper les fichiers hebdomadaires dans un dossier et de les importer ?
Cela crée une fonction pour le 1er fichier (fonction facilement modifiable) et la fonction s’applique ensuite à tous les autres fichiers du dossier.
Sauf si vous avez une volumétrie très conséquente vous n’aurez pas de soucis à importer 52 semaines.
StéphaneStéphane Lorin
ParticipantC’est normal, ce n’est pas un fichier excel mais un fichier Power BI
vous devez remplacer l’extension .xlsx par .pbix avant de l’ouvrirLes trois étapes principales (dépivotage de toutes les colonnes sauf la première, fractionnement de la colonne attribut – l’ancienne ligne de titre – avec le caractère “_” et le pivotage pour mettre les montants et les périodes M, M-1, M-2 en colonnes) sont facilement accessibles dans les menus.
sinon, voici le code de la requête.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(“i45Wcs7JTM0riXdUUNJRMgRhAwMDIGUEYhqBmWBRoLBSrA5cuZMCTI0xMcqdQcqNEWpMQExTnMpdQMoNCDgmFgA=”, BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Donnee_client = _t, imp_M = _t, Mnt_M = _t, #”imp_M-1″ = _t, #”Mnt_M-1″ = _t, #”imp_M-2″ = _t, #”Mnt_M-2″ = _t]),
#”Type modifié” = Table.TransformColumnTypes(Source,{{“Donnee_client”, type text}, {“imp_M”, Int64.Type}, {“Mnt_M”, Int64.Type}, {“imp_M-1”, Int64.Type}, {“Mnt_M-1”, Int64.Type}, {“imp_M-2”, Int64.Type}, {“Mnt_M-2″, Int64.Type}}),
#”Supprimer le tableau croisé dynamique des autres colonnes” = Table.UnpivotOtherColumns(#”Type modifié”, {“Donnee_client”}, “Attribut”, “Valeur”),
#”Fractionner la colonne par délimiteur” = Table.SplitColumn(#”Supprimer le tableau croisé dynamique des autres colonnes”, “Attribut”, Splitter.SplitTextByDelimiter(“_”, QuoteStyle.Csv), {“Attribut.1”, “Attribut.2″}),
#”Type modifié1″ = Table.TransformColumnTypes(#”Fractionner la colonne par délimiteur”,{{“Attribut.1”, type text}, {“Attribut.2″, type text}}),
#”Colonne dynamique” = Table.Pivot(#”Type modifié1″, List.Distinct(#”Type modifié1″[Attribut.1]), “Attribut.1”, “Valeur”, List.Sum)
in
#”Colonne dynamique”Stéphane
-
AuteurMessages