[Power Query] - Requête....déroutante

Bonjour à tous !

Je suis confronté à une étrangeté....

Objectif de la requête : Extraire, de manière aléatoire, 2 mots dans une liste.

Code de la requête :

let
    Source = #table({"Mots"}, {{"a bb zzz d ff xx"}}),
    Sélection = Table.AddColumn(Source, "Sélection", each
        let
           o=""
        in Text.Combine(List.FirstN(List.Sort(Text.Split([Mots]," "),each Number.Random()),2)," ")
        )[Sélection]
in
    Sélection

A ce stade, l'objectif est atteint. Chaque actualisation retourne bien une liste aléatoire.

Cependant si vous annihilez la ligne o="" (ligne a priori complètement inutile), la requête retourne un résultat figé.

De même pour la requête :

let
    Source = #table({"Mots"}, {{"a bb zzz d ff xx"}}),
    Sélection = Table.AddColumn(Source, "Sélection", each Text.Combine(List.FirstN(List.Sort(Text.Split([Mots]," "),each Number.Random()),2)," ")),
    #"Drill-down" = Sélection[Sélection]
in
    #"Drill-down"

L'étape "Sélection" est opérationnelle. mais pas le Drill-down.

Partagez-vous la même incompréhension ?

Bonjour,
Pour un drill-down effectif !?
Cdlt.

DrillDown = Sélection{0}[Sélection]

Bonjour à tous de nouveau !

Je vous remercie de cet éclairage.

Cette autre solution de contournement fonctionne.

Mais sa petite-soeur DrillDown = Sélection[Sélection]{0} non !

Cela rajoute à ma confusion

Bonjour,

Pour ajouter un peu de confusion...

Inconvénient, il faut savoir dimensionner à minima le nombre de mots dans la table..(ici, 100, ça passe, mais plus on est juste, et moins PQ devra bosser...)

Du moins, je le pense

let
    Source = #table({"Mots"}, {{"a bb zzz d ff xx"}}),
    Sélection = Table.AddColumn(Source, "Sélection", each
        Text.Combine(List.FirstN(List.Sort(Text.Split([Mots]," "),each Int64.From(Number.RandomBetween(0,100))),2)," ")
        )[Sélection]
in
    Sélection

Bon appétit

Bonjour à tous de nouveau !

@cousinhub : Merci pour cette participation.

Le but de ce sujet était moins de trouver une idée de contournement que de partager mon étonnement.

Cela étant, de la proposition de cousinhub, je retiens qu'en utilisant la fonction Number.RandomBetween à la place de Number.Random, le souci disparait.

L'usage du Number.Random interfère peut-être négativement sur le bon déroulement de la requête. Souci mémoire ?

Re-,

Peut-être une explication "microsoftienne"...

En VBA, afin de réinitialiser correctement la fonction "Rnd" (Aléa), il est conseillé d'utiliser la fonction Randomize lors d'une boucle

La mise à "" du paramètre o ne ferait-elle pas cette "réinitialisation"?

Simple hypothèse...

Bonjour à tous de nouveau !

La mise à "" du paramètre o ne ferait-elle pas cette "réinitialisation"?

Simple hypothèse...

Hypothèse .....tentante !

Cependant si ma deuxième requête avec le code final de Jean-Eric retourne bien le résultat attendu, la syntaxe inversée pour le Drill-down nous fait plonger dans un état...statique. Et là....point de réinitialisation !

Re-,

Rien ne vaut le bon boulier...

Réinitialisation infaillible...

image
Rechercher des sujets similaires à "power query requete deroutante"