Können wir "for-Schleife" in der Spaltenformel verwenden?Hallo zusammen,
Gibt es eine Möglichkeit, diese beiden Operationen (Erstellen einer neuen Spalte und dann Ausführen einer ForLoop) zu einer einzigen zu kombinieren?
Ich habe Kunden-IDs in einer Spalte wiederholt und dann ändert es sich irgendwann und die zweite ID wiederholt sich immer wieder und dann die dritte und so weiter. Ich möchte eine neue Spalte erstellen, sagen wir, Unq_Id und ihre Werte sollten leer sein, bis sich Customer_Id ändert. Ich kann dies im folgenden Skript tun, aber ich frage mich, ob es einen besseren Weg gibt, dies zu tun? Das bedeutet - eine Schleife innerhalb der Spaltenformel ausführen oder etwas Ähnliches!
dt << Neue Spalte ( "Unq_ID", Numerisch, Kontinuierlich, Setze jeden Wert ());
dt << Sortieren( nach(:Kunden_ID), Bestellung(Aufsteigend), Tabelle ersetzen(1) );
Für (i = 1, i <= N Zeilen(dt), i++,
Wenn(
:Kunden_ID[i] == :Kunden_ID[i+1], :Unq_ID[i] = :Kunden_ID[i]
)
);
Irgendein Vorschlag?
Danke, Hari
SkriptingRe: Können wir "for-Schleife" in der Spaltenformel verwenden?Hier ist eine Möglichkeit, es zu tun

Names Default To Here( 1 );
dt = New Table( "custIDs",
New Column( "Customer_ID",
character,
values( {"c1", "c1", "c1", "c2", "c2", "c3", "c3", "c3"} )
)
);
For( i = 1, i <= N Rows( dt ), i++,
If( i == 1,
dt << New Column( Char( :Customer_ID[i] ), character );
Column( dt, :Customer_ID[i] )[i] = :Customer_ID[i];
,
If( :Customer_ID[i] != :Customer_ID[i - 1],
dt << New Column( Char( :Customer_ID[i] ), character )
)
);
Column( dt, :Customer_ID[i] )[i] = :Customer_ID[i];
);
Re: Können wir "for loop" in der Spaltenformel verwenden?Hallo Nelson, ich habe darüber nachgedacht, aber es ist nicht das, was ich suche.
Das von Ihnen bereitgestellte Skript gibt mir etwas wie unten. Und der, den ich suche, befindet sich innerhalb des roten Dreiecks.

Auch, anstatt c1, c2 .... wie man 1, 2, 3 setzt, ... eine Art Zähler zu setzen, der um 1 erhöht wird, sobald es eine Änderung gibt.
Irgendeine Hilfe?
Re: Können wir "for-Schleife" in der Spaltenformel verwenden?Hier sind ein paar Möglichkeiten, um die gewünschte Spalte zu erstellen

Names Default To Here( 1 );
dt = New Table( "custIDs",
New Column( "Customer_ID", character, values( {"c1", "c1", "c1", "c2", "c2", "c3", "c3", "c3"} ) )
);
dt << New Column( "Or like this" );
counter = 0;
For( i = 1, i <= N Rows( dt ), i++,
If(
i == N Rows( dt ),
counter++;
:or like this[i] = counter;,
:Customer_ID[i] != :Customer_ID[i + 1],
counter++;
:or like this[i] = counter;
)
);
// or
dt << New Column( "or like this using formula",
formula(
x = .;
If( Row() == 1, counter = 0 );
If( :Customer_ID != Lag( :Customer_ID, -1 ) | Row() == N Rows( Current Data Table() ),
counter++;
x = counter;
);
x;
)
);
Betreff: Können wir "for loop" in der Spaltenformel verwenden?Ja, ich suchte nach der 2. Lösungsart.
Vielen Dank.