Power Query Indexation avec Critères

Bonsoir à tous,

Je souhaite créer une indexation particulière avec Power Query,

Je vous joins le fichier Test avec les explications,

Merci d'avance pour votre aide,

Cordialement,

18test-index.xlsx (13.82 Ko)

Bonsoir à tous !

Une approche possible :

let
    Source = TableJson,
    Ttr = List.Buffer(Table.ToRows(Source)),
    LG = List.Generate(
        ()=> [c=0, lst=Ttr{0}, i=1],
        each [c]<List.Count(Ttr),
        each [c=[c]+1, lst=Ttr{c}, i=[i]+ List.Count(List.Union({[lst],lst}) )-2],
        each [i]    
    ),
    Final = Table.FromColumns(Table.ToColumns(Source) & {LG},Table.ColumnNames(Source)&{"Index"})
in
    Final

Bonsoir Jfl,

Merci c'est exactement le résultat attendu, je vais décortiquer votre proposition

Bonne soirée à vous,

Cordialement,

Bonsoir,

je vais décortiquer votre proposition

Au cas où....

image

Bon courage

Hey,

Une proposition mais vraiment très similaire à celle de JFL

let
    Source = Excel.CurrentWorkbook(){[Name="INDEX"]}[Content],
    Idx = let a = List.Buffer(Table.ToRows(Source)) in 
List.Accumulate(
{1..Table.RowCount(Source)-1},
{1},
(s,c)=> s & {List.Last(s)+1 + List.Count(List.Difference(a{c},a{c-1}))}),
    Add = Table.FromColumns(Table.ToColumns(Source) & {Idx},Table.ColumnNames(Source)&{"Index"})
in
    Add

@+

Yep,

J'ai mieux...

image

Bon W-E à toutes et à tous...

cousinhub,

Tu m'as fumé

Ca m'a refait mon vendredi soir

@+

Aller une fois n'est pas coutume cousinhub,

Une version avec un Table.FromRows pour éviter le Table.ToColumns et devoir redéconstruire la table

let
    Source = Excel.CurrentWorkbook(){[Name="INDEX"]}[Content],
    L = List.Buffer(Table.ToRows(Source)),
    Idx = List.Accumulate(
{1..Table.RowCount(Source)-1},
{1},
(s,c)=> s & {List.Last(s)+1 + List.Count(List.Difference(L{c},L{c-1}))}),
    Add = Table.FromRows(List.Transform({0..List.Count(L)-1},(i) => List.Combine({ L{i} , { Idx{i} }})),Table.ColumnNames(Source)&{"Index"})
in
    Add

Je laisse le pro des tests de vélocité nous dire ce qu'il en est

@+

Hello,

Encore un petit message, techniquement nous ne sommes pas bon tous les deux ...

Si il y a changement mais que les valeurs ne changent pas au global sur la ligne, le List.Difference et List.Union induisent en erreur car les critères 3 et 2 ont bel et bien changé.

image

Une correction

let
    Source = Excel.CurrentWorkbook(){[Name="INDEX"]}[Content],
    L = List.Buffer(Table.ToRows(Source)),
    Idx = List.Accumulate(
{1..Table.RowCount(Source)-1},
{1},
(s,c)=> s & {List.Last(s)+1 + List.Count(List.Select({0..List.Count(L{c})-1},(i)=> L{c}{i} <> L{c-1}{i}))}),

    Add = Table.FromRows(List.Transform({0..List.Count(L)-1},(i) => List.Combine({ L{i} , { Idx{i} }})),Table.ColumnNames(Source)&{"Index"})
in
    Add

Sur ce, bonne nuit à tous

@+

Bonjour à tous !

Si il y a changement mais que les valeurs ne changent pas au global sur la ligne, le List.Difference et List.Union induisent en erreur car les critères 3 et 2 ont bel et bien changé.

La chose est-elle possible ? J'imagine que les règles d'élaboration des critères n'incluent pas cette possibilité.

Mais admettons.....

let
    Source = Excel.CurrentWorkbook(){[Name="INDEX"]}[Content],
    Ttr = List.Buffer(Table.ToRows(Source)),
    LG = List.Generate(
        ()=> [c=0, lst=Ttr{0}, i=1],
        each [c]<List.Count(Ttr),
        each [c=[c]+1, lst=Ttr{c}, i=[i]+ List.Sum(List.Transform(List.Zip({lst,[lst]}), each if _{0}<>_{1} then 1 else 0 ))+1],
        each [i]    
    ),
    Final = Table.FromColumns(Table.ToColumns(Source) & {LG},Table.ColumnNames(Source)&{"Index"})
in
    Final

Test des deux dernières versions (sur la base d'une source répétée 1000 fois) :

image

Bonjour à tous,

Merci pour vos retours, je précise néanmoins que les règles d'élaboration des critères sont celles comprise par le premier retour de Jfl, à savoir :

- le critère 1 peut changer indépendamment des autres critères,

- le critère 2 ne change uniquement que si le critère 1 change,

- le critère 3 ne change uniquement que si les critères 1 et 2 changent,

Je testerai chacune de vos propositions reprenant ces critères des que possible,

La première proposition de JFL est correcte, je suppose que les deux premières propositions de Baroute78 le sont également,

Cordialement,

Bonjour à tous !

Bien....

Je vous remercie de ce retour.

Rechercher des sujets similaires à "power query indexation criteres"