Analyse combinatoire à laide de Power Query dans LuckyTemplates

Analyse combinatoire à laide de Power Query dans LuckyTemplates

Je veux faire une plongée profonde dans quelque chose qui s'appelle l'analyse combinatoire. Cela peut être défini comme le choix et l'agencement d'éléments d'ensembles conformément à des règles prescrites. Cela peut sembler ésotérique, mais il y a en fait des cas d'utilisation très pratiques. Vous pouvez regarder la vidéo complète de ce tutoriel au bas de ce blog.

Dans ce didacticiel, je vais vous montrer comment procéder à l'aide de Power Query dans LuckyTemplates.

Table des matières

Cas d'exemple d'analyse combinatoire

Dans cet exemple d'analyse combinatoire, la tâche consistait à disposer d'une liste de six entrepôts et nous devions générer chaque ensemble unique de trois. Cela ressemble à un problème assez simple, mais c'est l'un de ces cas où la langue compte vraiment.

La bonne réponse ici est soit 216, 120, 56 ou 20. Ainsi, selon la façon dont vous définissez cet ensemble unique et les règles que vous avez prescrites, vous pourriez être décalé d'un facteur 10 si vous n'obtenez pas l'ensemble correctement.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Et donc, il y a deux dimensions qui comptent ici. La première est « l'ordre est-il important ? » Alors, quand on parle de trois ensembles de trois, ABC est-il équivalent à BCA ? Alors, l'ordre est-il important ? Et si l'ordre compte , nous parlons de permutations .

Un bon exemple de permutations où l'ordre peut avoir de l'importance est (nous parlons d'un contexte d'entrepôt) dans le cas du temps de déplacement. Il se peut très bien que si vous visitez l'entrepôt A, puis l'entrepôt B, puis l'entrepôt C, le temps de trajet dû au flux de trafic avec trafic contre trafic, l'heure à laquelle vous êtes arrivé à chaque entrepôt, pourrait être assez différent selon la commande dans lequel vous les visitez.

Le revers de la médaille est que " l'ordre n'a pas d'importance ", auquel cas nous parlons de combinaisons et non de permutations. Le cas d'utilisation ici qui est commun est la distance. Par exemple, à vol d'oiseau, la distance de A à B à C ne sera pas différente de la distance de B à C à A. Celles-ci seront considérées dans un contexte de combinaison.

Les combinaisons sont considérées comme des doublons les unes des autres. Alors que, dans un contexte de permutation, ils seront considérés comme uniques.

Et donc, comme vous pouvez le voir, une serrure à combinaison devrait vraiment être une serrure à permutation car dans ce cas, l'ordre compte, ce qui en fait une permutation, pas une combinaison.

La deuxième question ou dimension qui compte est " une fois qu'un article est sélectionné, peut-il être sélectionné à nouveau ?" Par exemple, si nous choisissons A comme premier entrepôt, pouvons-nous choisir à nouveau A, ou devons-nous choisir des éléments uniques à chaque fois ?

Le terme que nous utilisons ici est « avec remplacement » ou « sans remplacement ». Donc, si un article peut être choisi à nouveau, c'est avec remplacement, ce qui signifie que vous le choisissez. Et dans un sens, il retourne dans le bac de sélection et est à nouveau sélectionné. Si la réponse est non, c'est sans remplacement.

Et donc, vous pouvez voir dans cette solution que les permutations avec remplacement sont les moins contraignantes. C'est donc celui qui nous donne 216 ensembles uniques. Et les combinaisons sans remplacement sont les plus restrictives nous donnant 20.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Nous allons simplement utiliser ces formules pour vérifier nos résultats Power Query . Nous nous souviendrons donc de 216, 120, 56 et 20. Passons maintenant à Power Query et voyons comment cette analyse combinatoire se déroule.

Analyse combinatoire : Permutations dans Power Query

Dans Power Query, j'ai ici un cas très simple avec six entrepôts nommés.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Et j'ai développé cette fonction Power Query M, que j'ai utilisée pour traiter les combinaisons et les permutations.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Tout d'abord, je vais développer ce premier cas d'utilisation, qui est les permutations avec replacement , le moins restrictif du groupe. La façon de le faire dans Power Query est de prendre cette table Warehouses et de la référencer (dans DAX, nous utilisons CROSSJOIN ).

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Je vais appeler cela, Per w Rep (permutations avec remplacement).

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Il existe plusieurs façons d'effectuer une jointure croisée dans Power Query. Le moyen le plus simple que j'ai trouvé consiste simplement à ajouter une colonne , puis une colonne personnalisée . Dans la formule de colonne personnalisée, référencez la table Entrepôts .

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Et ce que nous trouverons lorsque nous cliquerons sur OK, c'est qu'il génère une table imbriquée.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Ensuite, nous développons cela et décochons le nom Utiliser les colonnes d'origine comme préfixe .

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Et nous obtenons ce Location.1 , qui est toutes les combinaisons possibles de deux. Il prend donc les six premières références contre les six autres combinaisons. Le deuxième six fait la même chose jusqu'à ce que nous ayons 36 ensembles différents.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Nous pouvons faire le troisième en recommençant. Nous allons donc ajouter une colonne, puis une colonne personnalisée, puis des entrepôts.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Et nous aurons les 216 lignes comme permutations avec remplacement.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Et vous pouvez voir d'ici, 3 colonnes, 216 rangées.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Le cas d'utilisation suivant est celui des permutations sans remplacement . Ce à quoi nous pensons ici est fondamentalement tout ce qui a un élément répété. Donc, dans ce tableau, nous allons regarder de la ligne 1 à la ligne 8.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Pour ce faire, nous allons jeter un œil à cette fonction, fxSortAndIsDistinct .

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Dans l'éditeur avancé, vous pouvez voir que cela demande essentiellement une table, puis il fait un SortLocs . Mais la partie importante ici pour le "avec remplacement" ou "sans remplacement" est qu'il s'agit d'une fonction IsDistinct . Ce que cela fait, c'est simplement prendre une liste d'éléments et déterminer vrai ou faux, s'il est distinct ou s'il a des doublons dans la liste des éléments.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Nous allons donc ici, sélectionnez le Perm w Rep et appuyez sur Invoke .

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Cela nous donnera ces deux nouvelles colonnes, SortLocs et IsDistinct . Maintenant, rappelez-vous que les huit premiers enregistrements avaient des doublons et que le neuvième enregistrement était la première fois que nous avons vu le distinct . C'est pourquoi la neuvième ligne ici est la première qui apparaît comme vraie.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Si nous repensons aux chiffres que nous avions sur les calculs factoriels, nous nous attendons à 120 enregistrements si nous supprimons les enregistrements non distincts. Alors, essayons de filtrer ici et de retirer le FAUX.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Ce faisant, nous obtenons ici exactement les 120 lignes que nous attendons. Maintenant, renommez ceci en Perm wo Rep (permutation sans remplacement).

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Analyse combinatoire : combinaisons dans Power Query

Maintenant, nous allons faire les combinaisons avec replacement . Pour ce faire, nous recommençons simplement le processus et répétons l'étape (fonction invoquée). C'est donc normal que nous ayons des doublons, mais nous ne voulons pas d'ensembles contenant les mêmes éléments , mais dans un ordre différent.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Dans ce cas, lorsque nous parlons de combinaisons. Si vous vous souvenez que ABC est égal à BCA est égal à CAB, ceux-ci sont tous considérés comme des doublons les uns des autres. Et la façon dont nous déterminons cela est à travers la fonction Sort ( fxSortAndIsDistinct ).

Si nous revenons à la fonction dans l'éditeur avancé, nous verrons pour cette deuxième colonne que nous avons pris cette liste et l'avons triée par ordre alphabétique. Ensuite, nous avons extrait les valeurs délimitées par des virgules de cette liste. Maintenant, nous avons chaque ensemble trié par ordre alphabétique. Nous avons normalisé l'ordre pour faciliter la recherche de doublons.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Maintenant, si nous revenons à cette fonction invoquée, rappelez-vous que nous recherchons ici 56 enregistrements. Nous prenons donc ce type d'emplacement ( SortLocs ) et supprimons nos doublons .

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Avec cela, nous obtenons 56 lignes.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Et donc, c'est notre troisième cas d'utilisation. Renommez ceci en CC w Rep (combinaisons avec remplacement).

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Terminons celui-ci en reprenant ce tableau de permutations avec remplacement (Perm w Rep) et faisons le même schéma (invoke). Ensuite, nous allons supprimer les doublons (colonne SortLocs) car il s'agit d'une combinaison et l'ordre n'a pas d'importance. C'est sans remplacement, nous ne voulons donc que la liste distincte . Donc, nous cliquons sur FALSE dans la colonne IsDistinct.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates

Avec cela, nous obtenons 20 enregistrements. Et maintenant, nous avons nos quatre cas d'utilisation.

Analyse combinatoire à l'aide de Power Query dans LuckyTemplates


Tri des colonnes de la table de dates dans LuckyTemplates
Guide du débutant sur le code M dans LuckyTemplates
Convertir la fonction de table de dates en une requête de table dans LuckyTemplates

Conclusion

Nous avons donc maintenant nos quatre cas d'utilisation. Vous pouvez vraiment voir à quel point cela est puissant en termes de développement de cette analyse combinatoire qui vous donne le contrôle sur le remplacement et les éléments distincts.

Ceci est même applicable dans certains cas plus complexes où vous avez un remplacement partiel, ou peut-être sélectionnez un élément en double pour la première fois, mais pas la deuxième fois. Vous pouvez toujours gérer cela correctement dans Power Query .

J'espère que vous avez trouvé cela utile. Consultez les liens ci-dessous pour plus de contenu. Vous pouvez également regarder la vidéo complète de ce tutoriel ci-dessous.

Tous mes vœux!


Quest-ce que le self en Python ? Exemples concrets

Quest-ce que le self en Python ? Exemples concrets

Qu'est-ce que le self en Python ? Exemples concrets

Comment enregistrer et charger un fichier RDS dans R

Comment enregistrer et charger un fichier RDS dans R

Vous apprendrez à enregistrer et à charger des objets à partir d'un fichier .rds dans R. Ce blog expliquera également comment importer des objets de R vers LuckyTemplates.

First N Business Days Revisited - Une solution de langage de codage DAX

First N Business Days Revisited - Une solution de langage de codage DAX

Dans ce didacticiel sur le langage de codage DAX, découvrez comment utiliser la fonction GENERATE et comment modifier dynamiquement le titre d'une mesure.

Présentez des informations à laide de la technique des visuels dynamiques multi-threads dans LuckyTemplates

Présentez des informations à laide de la technique des visuels dynamiques multi-threads dans LuckyTemplates

Ce didacticiel explique comment utiliser la technique Multi Threaded Dynamic Visuals pour créer des informations à partir de visualisations de données dynamiques dans vos rapports.

Introduction au filtrage du contexte dans LuckyTemplates

Introduction au filtrage du contexte dans LuckyTemplates

Dans cet article, je vais parcourir le contexte du filtre. Le contexte de filtrage est l'un des principaux sujets que tout utilisateur de LuckyTemplates doit d'abord connaître.

Meilleurs conseils pour utiliser les applications dans le service en ligne LuckyTemplates

Meilleurs conseils pour utiliser les applications dans le service en ligne LuckyTemplates

Je souhaite montrer comment le service en ligne LuckyTemplates Apps peut aider à gérer différents rapports et informations générés à partir de diverses sources.

Analyser les changements de marge bénéficiaire au fil du temps - Analytics avec LuckyTemplates et DAX

Analyser les changements de marge bénéficiaire au fil du temps - Analytics avec LuckyTemplates et DAX

Découvrez comment calculer les modifications de votre marge bénéficiaire à l'aide de techniques telles que la création de branches de mesure et la combinaison de formules DAX dans LuckyTemplates.

Idées de matérialisation pour les caches de données dans DAX Studio

Idées de matérialisation pour les caches de données dans DAX Studio

Ce didacticiel abordera les idées de matérialisation des caches de données et comment elles affectent les performances des DAX dans la fourniture de résultats.

Rapports dentreprise à laide de LuckyTemplates

Rapports dentreprise à laide de LuckyTemplates

Si vous utilisez encore Excel jusqu'à présent, c'est le meilleur moment pour commencer à utiliser LuckyTemplates pour vos besoins en matière de rapports commerciaux.

Quest-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir

Quest-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir

Qu'est-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir