Index qui énumère par groupeBonjour,
J'essaie de configurer un index qui énumère par groupe ou ensemble de lignes. J'ai joint une photo pour essayer de mieux expliquer ce que j'essaie de réaliser.
Comme vous pouvez le voir sur la photo, j'essaie de baser l'index sur le groupe d'étapes. La difficulté ici ou ce que je trouve difficile est que le nombre d'instances auxquelles chaque étape est mentionnée pour chaque groupe peut varier et il y a des lacunes où aucune n'est répertoriée.

C'est ce que j'ai utilisé pour obtenir les résultats affichés dans :Achieved_Index, mais ce que je recherche vraiment, ce sont des résultats comme dans :Expected_Index
dt = Data Table("sample");
dt << New Column( "Achieved_Index", Numeric( ) );
x = 1;
For Each Row( If( :StepName == "",
:Achieved_Index = 0,
If( Lag(:StepName, -1) != "" | :StepName == "STEP3",
:Achieved_Index = x,
x = x + 1
)
)
);Le but ultime est de faire fonctionner correctement cette colonne d'index. Que de l'utiliser pour configurer la colonne de drapeau pour identifier la marque à mi-chemin ou la dernière étape pour chaque groupe s'il n'y a que deux instances. Je n'ai pas vraiment beaucoup réfléchi à celui-ci, à part peut-être obtenir le nombre de chaque étape pour chaque index, en divisant par 2 que d'utiliser cette valeur pour ma fonction Lag(). Toute suggestion à ce sujet serait également appréciée, merci !
Re : Index qui énumère par groupetxnelson, merci pour l'aide. Cela m'a aidé à aller là où j'avais besoin.
C'est le code qui a exécuté ce que je cherchais:
For Each Row(
If( Row() == 1, step = 0);
If(Row() == 1 & :StepName != "", step = 1);
If( :StepName != "" & Lag( :StepName ) == "",
:Achieved_index = step++);
If( :StepName != "", :Achieved_index = step, :Achieved_index = 0 );
);
J'ai dû faire quelques modifications/ajouts parce que même si je l'appelle un index, je voulais commencer à 1.
J'ai également dû ajouter une instruction If supplémentaire car si la première ligne avait :StepName == "" cela annulerait le décompte.
Re : Index qui énumère par groupeLa formule ci-dessous vous apportera les réponses que vous souhaitez
If( Row() == 1, step = 0 );
If( :stepName != "" & Lag( :stepName ) == "" | Row() == 1,
step
++);
If( :stepName != "", step, 0 );