In U-SQL sind keine Cursor vorhanden, da die oben erwähnte Anweisung verwendet wird.
U-SQL bietet keine imperativen Code-Flow-Konstrukte, weil es die Optimierung des Skripts durch den Optimierer behindert.
Sie sollten daran denken, Ihr Problem deklarativ anzugehen. Wenn Sie beispielsweise eine Liste von IDs (entweder in einer Tabelle oder in SqlArray oder sogar in einer Datei) haben, verwenden Sie einen deklarativen Join. Zum Beispiel wollen Sie 42 zu jedem Wert hinzuzufügen, wo der Schlüssel in einer Liste der vorhandenen Schlüssel ist:
// Two options for providing the "looping data"
// Option 1: Array Variable
DECLARE @keys_var = new SqlArray<string>{"k1", "k2", "k3"};
// Option 2: Rowset (eg from an EXTRACT from file, a table or other place)
@keys = SELECT * FROM (VALUES("k1"), ("k2"), ("k3")) AS T(key);
// This is the data you want to iterate over to add 42 to the value column for every matching key
@inputdata = SELECT * FROM (VALUES (1, "k1"), (2, "k1"), (3, "k2"), (6, "k5")) AS T(value, key);
//Option 1:
@res = SELECT value+42 AS newval, key FROM @inputdata WHERE @keys_var.Contains(key);
OUTPUT @res TO "/output/opt1.csv" USING Outputters.Csv();
//Option 2:
@res = SELECT value+42 AS newval, i.key
FROM @inputdata AS i INNER JOIN @keys AS k
ON i.key == k.key;
OUTPUT @res TO "/output/opt2.csv" USING Outputters.Csv();
Jetzt in Ihrem Fall möchten Sie datengesteuerte Ausgabedatei Sätze haben. An dieser Funktion wird gerade gearbeitet (es ist eines unserer top asks). Bis dahin müssten Sie ein Skript schreiben, um das Skript zu generieren (ich werde ein Beispiel für Ihre andere Frage geben).
Dies ist das gleiche wie Ihre andere Frage. Ich wiederhole, USQL ist nicht zum Iterieren gedacht. –
Ist nicht das gleiche, diese Frage bezieht sich auf den Cursor oder Schleifen und ähnliche Fälle (meine andere Frage bezieht sich auf die Dateipartitionierung). Das war ein Grund, warum ich die Fragen geteilt habe, weil ich gerne wissen würde, ob ein iterativer Ansatz möglich ist oder nicht, und in meiner anderen Frage würde ich gerne wissen, wie man Dateien nach Schlüsselwerten partitioniert. – peterko